SQL JOIN
- Föregående sida SQL Aliases
- Nästa sida SQL Inner Join
SQL join används för att fråga data från en eller flera tabeller baserat på relationerna mellan kolumnerna i dessa tabeller.
Join och Nyckel
Ibland behöver vi hämta data från två eller fler tabeller för att få ett fullständigt resultat. Då måste vi utföra en join.
Tabeller i databasen kan relateras till varandra genom nycklar. En huvukolumn (Primary Key) är en kolumn där varje rad har ett unikt värde. I tabellen är varje huvukolumns värde unikt. Syftet med detta är att korsa binda data mellan tabeller utan att upprepa all data i varje tabell.
Se "Persons"-tabellen:
Id_P | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
Vänligen notera att "Id_P"-kolumnen är huvukolumnen i Personen-tabellen. Detta innebär att ingen rad kan ha samma Id_P. Även om två personer har samma namn kan Id_P skilja dem från varandra.
Nästa, se "Orders"-tabellen:
Id_O | OrderNo | Id_P |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 65 |
Vänligen notera att "Id_O"-kolumnen är huvukolumnen i Orders-tabellen, och "Id_P"-kolumnen i Orders-tabellen används för att hänvisa till Personen-tabellen utan att använda deras exakta namn.
Observera att "Id_P"-kolumnen länkar de två ovanstående tabellerna samman.
Hänvisa till två tabeller
Vi kan hämta data från två tabeller genom att hänvisa till båda tabellerna:
Vem har beställt produkter och vad har de beställt?
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P
Resultatset:
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
SQL JOIN - Använda Join
Förutom ovanstående metod kan vi också använda nyckelordet JOIN för att hämta data från två tabeller.
Om vi vill lista alla människors beställningar kan vi använda följande SELECT-sats:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName
Resultatset:
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
Olika SQL JOIN
Förutom INNER JOIN (inre anslutning) som vi använde i föregående exempel kan vi också använda flera andra typer av anslutningar.
Nedan listas de JOIN-typer du kan använda, samt skillnaderna mellan dem.
- JOIN: Returnerar rader om det finns minst en match i tabellen
- LEFT JOIN: Returnerar alla rader från vänster tabell även om det inte finns matchning i höger tabell
- RIGHT JOIN: Returnerar alla rader från höger tabell även om det inte finns matchning i vänster tabell
- FULL JOIN: Returnerar rader om det finns matchning i någon av tabellerna
- Föregående sida SQL Aliases
- Nästa sida SQL Inner Join