Sammendrag: i denne opplæringen lærer du hvordan du spør etter data fra flere tabeller ved hjelp av SQL INNER JOIN-setning.
I forrige opplæring lærte du hvordan du kan spørre om data fra en enkelt tabell ved hjelp av SELECT-setningen. Imidlertid vil du ofte spørre data fra flere tabeller for å få et komplett resultatsett for analyse. For å spørre om data fra flere tabeller bruker du sammenføyningsuttalelser.
SQL gir flere typer sammenføyninger som indre sammenføyning, ytre sammenføyning (venstre ytre sammenføyning eller venstre sammenføyning, høyre ytre sammenføyning eller høyre sammenføyning og full ytre sammenføyning ) og selv bli med. I denne opplæringen vil vi vise deg hvordan du bruker INNER JOIN klausul.
SQL INNER JOIN syntaks
Følgende illustrerer INNER JOIN syntaks for sammenføyning av to tabeller:
|
1
2
3
4
5
|
VELG
kolonne1, kolonne2
FRA
tabell_1
INNRE JOIN tabell_2 PÅ join_condition;
|
La oss undersøke syntaksen ovenfor mer detaljert:
-
table_1ogtable_2kalles sammenføyde tabeller. - For hver rad i
table_1finner spørringen den tilsvarende raden itable_2som oppfyller tilknytningsbetingelsen. Hvis den tilsvarende raden ble funnet, returnerer spørringen en rad som inneholder data fra begge tabellene. Ellers undersøker den neste rad itable_1, og denne prosessen fortsetter til alle radene itable_1blir undersøkt.
For å bli med i flere enn to tabeller, ble den samme logikken brukt.
Eksempler på SQL INNER JOIN
SQL INNER JOIN – spørring av data fra to tabelleksempler
I dette eksemplet bruker vi tabellene products og categories i eksempeldatabasen. Følgende bilde illustrerer databasediagrammet.
I diagrammet ovenfor:
- En kategori kan ha mange produkter.
- Ett produkt tilhører en og én kategori.
Derfor er det et mange-til-ett forhold mellom radene i categories tabell og rader i products tabellen. Koblingen mellom de to tabellene er categoryid -kolonnen.
Vi må spørre følgende data fra begge tabellene:
-
productID,productNamefraproducts-tabellen. -
categoryNamefracategoriestabellen.
Følgende spørring henter data fra begge tabellene:
|
1
2
3
4
5
6
|
VELG
productID, productName, categoryName
FRA
produkter
INNRE MEDLEM
kategorier PÅ kategorier.categoryID = products.categoryID;
|
Tilkoblingsbetingelsen er spesifisert i INNER JOIN -klausulen etter ON nøkkelordet som uttrykk:
|
1
|
categories.categoryID = products.categoryID
|
For hver rad i products tabell, finner spørringen en tilsvarende rad i categories tabellen som har samme categoryid. Hvis det er samsvar mellom to rader i begge tabellene, returnerer den en rad som inneholder kolonner spesifisert i SELECT-setningen, dvs. produkt-ID, produktnavn og kategorinavn; Ellers sjekker den neste rad i products -tabellen for å finne den samsvarende raden i categories -tabellen. Denne prosessen fortsetter til den siste raden i produkttabellen er undersøkt.
SQL INNER JOIN – spørring av data fra tre tabeller
Vi kan bruke de samme teknikkene for å bli med i tre tabeller.Følgende spørsmål velger productID, productName, categoryName og supplier fra products, categories og suppliers tabellene:
|
1
2
3
4
5
6
7
8
9
10
11
|
VELG
productID,
productName,
categoryName,
companyName AS leverandør
FRA
produkter
INNRE JOIN
kategorier PÅ kategorier. categoryID = products.categoryID
INNRE MEDLEM
leverandører PÅ leverandører.supplierID = products.supplierID
|
Implisitt SQL INNER JOIN
Det er en annen form for INNER JOIN kalt implisitt indre sammenføyning som vist nedenfor:
|
1
2
3
4
5
6
7
|
VELG
kolonne1, kolonne2
FRA
tabell_1,
tabell_2
HVOR
join_condition;
|
I dette skjemaet angir du alle sammenføyde tabeller i FROM klausulen og sett sammenkoblingsbetingelsen i WHERE klausul i SELECT uttalelsen. Vi kan omskrive spørreeksemplet ovenfor ved å bruke den implisitte INNER JOIN som følger:
|
1
2
3
4
5
6
7
|
VELG
productID, productName, categoryName
FRA
produkter,
kategorier
HVOR
products.categoryID = categories.categoryID;
|