SQL INNER JOIN (Svenska)

Sammanfattning: i den här självstudien lär du dig hur du frågar om data från flera tabeller med hjälp av SQL INNER JOIN-uttalande.

I föregående handledning lärde du dig att fråga data från en enda tabell med SELECT-satsen. Men du vill ofta fråga data från flera tabeller för att få en fullständig resultatuppsättning för analys. För att fråga data från flera tabeller använder du kopplingsuttalanden.

SQL tillhandahåller flera typer av kopplingar, t.ex. inre koppling, yttre koppling (vänster yttre koppling eller vänster koppling, höger yttre koppling eller höger koppling och fullständig yttre koppling ) och själv gå med. I denna handledning visar vi dig hur du använder INNER JOIN -satsen.

SQL INNER JOIN syntax

Följande illustrerar INNER JOIN syntax för sammanfogning av två tabeller:

1
2
3
4
5

VÄLJ
kolumn1, kolumn2
FRÅN
tabell_1
INNRE GÅ MED tabell_2 PÅ join_condition;

Låt oss granska syntaxen ovan mer detaljerat:

  • table_1 och table_2 kallas förenade tabeller.
  • För varje rad i table_1 hittar sökningen motsvarande rad i table_2 som uppfyller kopplingsvillkoret. Om motsvarande rad hittades returnerar frågan en rad som innehåller data från båda tabellerna. Annars undersöks nästa rad i table_1, och denna process fortsätter tills alla rader i table_1 undersöks.

För att gå med i mer än två tabeller tillämpades samma logik.

Exempel på SQL INNER JOIN

SQL INNER JOIN – fråga information från två tabellsexempel

I det här exemplet använder vi products och categories tabellerna i exempeldatabasen. Följande bild illustrerar databasdiagrammet.

I diagrammet ovan:

  • En kategori kan ha många produkter.
  • En produkt tillhör en och en kategori.

Därför finns det ett många-till-ett-förhållande mellan raderna i categories tabell och rader i products tabellen. Länken mellan de två tabellerna är categoryid -kolumnen.

Vi måste fråga följande data från båda tabellerna:

  • productID, productName från products -tabellen.
  • categoryName från categories tabellen.

Följande fråga hämtar data från båda tabellerna:

1
2
3
4
5
6

VÄLJ
produktID, produktnamn, kategorinamn
FRÅN
produkter
INNRE GÅNG
kategorier PÅ kategorier.categoryID = products.categoryID;

Kopplingsvillkoret anges i INNER JOIN -klausulen efter ON nyckelordet som uttrycket:

1

categories.categoryID = products.categoryID

För varje rad i products tabell hittar frågan en motsvarande rad i categories tabellen som har samma categoryid. Om det finns en matchning mellan två rader i båda tabellerna returnerar en rad som innehåller kolumner som anges i SELECT-satsen, dvs. produkt-id, produktnamn och kategorinamn; annars kontrollerar den nästa rad i products -tabellen för att hitta matchande rad i categories -tabellen. Denna process fortsätter tills den sista raden i produkttabellen undersöks.

SQL INNER JOIN – fråga information från tre tabeller

Vi kan använda samma tekniker för att sammanfoga tre tabeller.Följande fråga väljer productID, productName, categoryName och supplier från products, categories och suppliers tabeller:

1
2
3
4
5
6
7
8
9
10
11

VÄLJ
productID,
produktnamn,
categoryName,
companyName AS leverantör
FRÅN
produkter
INNRE GÅ MED
kategorier PÅ kategorier. categoryID = products.categoryID
INNRE GÅ MED
leverantörer PÅ leverantörer.supplierID = products.supplierID

Implicit SQL INNER JOIN

Det finns en annan form av INNER JOIN kallad implicit inner join som visas nedan:

1
2
3
4
5
6
7

VÄLJ
kolumn1, kolumn2
FRÅN
tabell_1,
tabell_2
VAR
join_condition;

I det här formuläret anger du alla sammanfogade tabeller i FROM -satsen och sätta kopplingsvillkoret i WHERE-satsen i SELECT -uttalandet. Vi kan skriva om frågeexemplet ovan med det implicita INNER JOIN enligt följande:

1
2
3
4
5
6
7

VÄLJ
productID, productName, categoryName
FRÅN
produkter,
kategorier
VAR
products.categoryID = categories.categoryID;

Visualisera INNER JOIN med Venn-diagram

Write a Comment

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *