PostgreSQL - JOINS

PostgreSQL tiltrer
klausulen brukes for å kombinere poster fra to eller flere tabeller i en database. En BLI er et middel for å kombinere felt fra to tabeller ved hjelp av verdier som er felles for hver

Bli Typer i PostgreSQL er:.

  • Den CROSS BLI

    INNER JOIN

    VENSTRE YTRE BLI

    HØYRE YTRE BLI

    Den FULL YTRE BLI

    Før vi går videre, la oss vurdere to tabeller COMPANY og DEPARTMENT. Vi har allerede sett INSERT-setninger til befolker COMPANY bordet. Så bare la oss anta listen over oppføringer tilgjengelige i COMPANY tabellen:
    id | Navn | alder | adressere | lønn | join_date ---- + ------- + ----- + ----------- + -------- + --------- - 1 | Paul | 32 | California | 20000 | 2001-07-13 3 | Teddy | 23 | Norge | 20000 | 4 | Mark | 25 | Rich-Mond | 65000 | 2007-12-13 5 | David | 27 | Texas | 85000 | 2007-12-13 2 | Allen | 25 | Texas | | 2007-12-13 8 | Paul | 24 | Houston | 20000 | 2005-07-13 9 | James | 44 | Norge | 5000 | 2005-07-13 10 | James | 45 | Texas | 5000 | 2005-07-13

    En annen tabell er DEPARTMENT, har følgende definisjon:
    CREATE TABLE INSTITUTT (ID INT PRIMARY KEY NOT NULL, DEPT CHAR (50) NOT NULL, EMP_ID INT NOT NULL);

    Her er listen over INSERT-setninger for å fylle DEPARTMENT tabell:
    INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID) VALUES (1, 'IT Billing', 1); INSERT INTO avdeling (ID, DEPT, EMP_ID) VALUES (2, 'Engineering', 2); INSERT INTO avdeling (ID, DEPT, EMP_ID) VALUES (3, "Finance", 7);

    Endelig har vi følgende liste over poster tilgjengelig i DEPARTMENT tabellen:
    id | tjenesten | emp_id ---- + ------------- + -------- 1 | IT Billing | 1 2 | Engineering | 2 3 | Finance | 7
    Den CROSS BLI

    En CROSS BLI kampene hver rad av den første tabellen med hver rad i den andre tabellen. Hvis inngangs bordene har x- og y-spalter, henholdsvis, vil det resulterende bordet er x + y kolonner. Fordi CROSS tiltrer har potensial til å generere svært store bord, må man sørge for å bare bruke dem når det passer

    Følgende er syntaksen CROSS BLI:.
    SELECT ... Fra table1 CROSS BLI table2. ..

    Basert på tabellene ovenfor, kan vi skrive en CROSS BLI slik:
    testdb = # SELECT EMP_ID, NAVN, DEPT fra selskap CROSS BLI DEPARTMENT;

    Over spørring vil gi følgende resultat:
    emp_id | Navn | Dept ------ | ------- | -------------- 1 | Paul | IT Billing 1 | Teddy | IT Billing 1 | Mark | IT Billing 1 | David | IT Billing 1 | Allen | IT Billing 1 | Paul | IT Billing 1 | James | IT Billing 1 | James | IT Billing 2 | Paul | Engineering 2 | Teddy | Engineering 2 | Mark | Engineering 2 | David | Engineering 2 | Allen | Engineering 2 | Paul | Engineering 2 | James | Engineering 2 | James | Engineering 7 | Paul | Finans 7 | Teddy | Finans 7 | Mark | Finans 7 | David | Finans 7 | Allen | Finans 7 | Paul | Finans 7 | James | Finans 7 | James | Finans
    Den INNER JOIN

    En INNER JOIN oppretter en ny resultattabell ved å kombinere kolonneverdier av to tabeller (Tabell 1 og table2) basert på join-predikat. Spørringen sammen hver rad med table1 med hver rad med table2 å finne alle par av rader, som tilfredsstiller join-predikat. Når join-predikat er fornøyd, er kolonneverdier for hver matchet par rader med table1 og table2 sammen til et resultat rad.

    En INNER JOIN er den vanligste typen delta og er standardtypen delta . Du kan bruke INNER søkeord eventuelt

    Følgende er syntaksen INNER JOIN.
    SELECT table1.column1, table2.column2 ... Fra table1INNER JOIN table2ON table1.common_filed = table2.common_field;

    Basert på ovennevnte tabeller, kan vi skrive en INNER JOIN som følger:
    testdb = # SELECT EMP_ID, NAVN, DEPT fra selskap INNER JOIN DEPARTMENT PÅ COMPANY.ID = DEPARTMENT.EMP_ID;

    Over søket vil produsere følgende Resultatet:
    emp_id | Navn | DEPT -------- + ------- + ------------ 1 | Paul | IT Billing 2 | Allen | Engineering
    VENSTRE YTRE BLI

    YTRE BLI er en forlengelse av INNER JOIN. SQL-standarden definerer tre typer av ytre kobles: Venstre, Høyre, og FULL og PostgreSQL støtter alle disse

    Ved VENSTRE YTRE BLI, en indre delta utføres først.. Så, for hver rad i tabellen T1 som ikke tilfredsstiller ikke delta stand med en rad i tabellen T2, er en sluttet rad lagt med nullverdier i kolonner av T2. Dermed sluttet bordet har alltid minst en rad for hver rad i T1

    Følgende er syntaksen til VENSTRE ytre delta.
    SELECT ... Fra table1 VENSTRE YTRE BLI table2 PÅ conditional_expression ...

    Basert på tabellene ovenfor, kan vi skrive en indre bli som følger:
    testdb = # SELECT EMP_ID, NAVN, DEPT fra selskap VENSTRE YTRE BLI DEPARTMENT PÅ COMPANY.ID = DEPARTMENT.EMP_ID;

    Over søket vil produsere følgende resultat:
    emp_id | Navn | DEPT -------- + ------- + ------------ 1 | Paul | IT Billing 2 | Allen | Engineering | James | | David | | Paul | | Mark | | Teddy | | James |
    HØYRE YTRE BLI

    Først en INNER JOIN er utført. Så, for hver rad i tabellen T2 som ikke tilfredsstiller ikke delta stand med en rad i tabellen T1 er en sluttet rad lagt med nullverdier i kolonner av T1. Dette er det motsatte av en venstre delta; resultattabellen vil alltid ha en rad for hver rad i T2

    Følgende er syntaksen VENSTRE ytre delta.
    SELECT ... Fra table1 HØYRE YTRE BLI table2 PÅ conditional_expression ...

    Basert på ovennevnte tabeller, kan vi skrive en indre bli som følger:
    testdb = # SELECT EMP_ID, NAVN, DEPT fra selskap HØYRE YTRE BLI DEPARTMENT PÅ COMPANY.ID = DEPARTMENT.EMP_ID;

    Over søket vil produsere følgende resultat:
    emp_id | Navn | DEPT -------- + ------- + -------- 1 | Paul | IT Billing 2 | Allen | Engineering 7 | | Finans
    Den FULL YTRE BLI

    Først en INNER JOIN er utført. Så, for hver rad i tabellen T1 som ikke tilfredsstiller ikke delta stand med en rad i tabellen T2, er en sluttet rad lagt med nullverdier i kolonner av T2. Også, for hver rad i T2 som ikke tilfredsstiller delta stand med en rad i T1 er en sluttet rad med nullverdier i kolonnene for T1 lagt

    Følgende er syntaksen FULL ytre delta.
    SELECT ... Fra table1 FULL YTRE BLI table2 PÅ conditional_expression ...

    Basert på tabellene ovenfor, kan vi skrive en indre bli som følger:
    testdb = # SELECT EMP_ID, NAVN, DEPT fra selskap FULL YTRE BLI INSTITUTT PÅ COMPANY.ID = DEPARTMENT.EMP_ID;

    Over spørring vil gi følgende resultat:
    emp_id | Navn | DEPT -------- + ------- + --------------- 1 | Paul | IT Billing 2 | Allen | Engineering 7 | | Finance | James | | David | | Paul | | Mark | | Teddy | | James |