SQL INNER JOIN (Dansk)

Oversigt: i denne vejledning lærer du, hvordan du forespørger om data fra flere tabeller ved hjælp af SQL INNER JOIN-sætning.

I den foregående vejledning lærte du, hvordan du forespørger om data fra en enkelt tabel ved hjælp af SELECT-sætningen. Du vil dog ofte forespørge på data fra flere tabeller for at få et komplet resultatsæt til analyse. For at forespørge på data fra flere tabeller bruger du sammenføjningsudsagn.

SQL leverer flere typer sammenføjninger såsom indre sammenføjning, ydre sammenføjning (venstre ydre sammenføjning eller venstre sammenføjning, højre ydre sammenføjning eller højre sammenføjning og fuld ydre sammenføjning ) og selv deltage. I denne vejledning viser vi dig, hvordan du bruger INNER JOIN -klausulen.

SQL INNER JOIN syntaks

Følgende illustrerer INNER JOIN syntaks til sammenføjning af to tabeller:

1
2
3
4
5

VÆLG
kolonne1, kolonne2
FRA
tabel_1
INNRE JOIN-tabel_2 PÅ join_condition;

Lad os undersøge syntaksen ovenfor mere detaljeret:

  • table_1 og table_2 kaldes sammenføjede tabeller.
  • For hver række i table_1 finder forespørgslen den tilsvarende række i table_2, der opfylder sammenføjningsbetingelsen. Hvis den tilsvarende række blev fundet, returnerer forespørgslen en række, der indeholder data fra begge tabeller. Ellers undersøger den næste række i table_1, og denne proces fortsætter, indtil alle rækkerne i table_1 er undersøgt.

For at slutte sig til mere end to tabeller anvendte den samme logik.

Eksempler på SQL INNER JOIN

SQL INNER JOIN – forespørgsel på data fra to tabelleeksempler

I dette eksempel bruger vi products og categories tabellerne i eksempeldatabasen. Følgende billede illustrerer databasediagrammet.

I diagrammet ovenfor:

  • En kategori kan have mange produkter.
  • Et produkt hører til en og kun en kategori.

Derfor er der et mange-til-en forhold mellem rækkerne i categories tabel og rækker i products tabellen. Forbindelsen mellem de to tabeller er categoryid -kolonnen.

Vi skal spørge følgende data fra begge tabeller:

  • productID, productName fra products -tabellen.
  • categoryName fra categories -tabellen.

Den følgende forespørgsel henter data fra begge tabeller:

1
2
3
4
5
6

VÆLG
productID, productName, categoryName
FRA
produkter
INNRE MEDLEM
kategorier PÅ kategorier.categoryID = products.categoryID;

Forbindelsesbetingelsen er specificeret i INNER JOIN -klausulen efter ON nøgleordet som udtryk:

1

categories.categoryID = products.categoryID

For hver række i products tabel, finder forespørgslen en tilsvarende række i categories -tabellen, der har den samme categoryid. Hvis der er et match mellem to rækker i begge tabeller returnerer den en række, der indeholder kolonner, der er specificeret i SELECT-klausulen, dvs. produkt-id, produktnavn og kategorinavn; Ellers kontrolleres den næste række i products -tabellen for at finde den matchende række i categories -tabellen. Denne proces fortsætter, indtil den sidste række i produkttabellen undersøges.

SQL INNER JOIN – forespørgsel på data fra tre tabeller

Vi kan bruge de samme teknikker til at forbinde tre tabeller.Følgende forespørgsel vælger productID, productName, categoryName og supplier fra products, categories og suppliers tabellerne:

1
2
3
4
5
6
7
8
9
10
11

VÆLG
productID,
productName,
categoryName,
firmanavn AS leverandør
FRA
produkter
INNRE MEDLEM
kategorier ON kategorier. categoryID = products.categoryID
INNRE MEDLEM
leverandører PÅ leverandører.supplierID = products.supplierID

Implicit SQL INNER JOIN

Der er en anden form for INNER JOIN kaldet implicit indre sammenføjning som vist nedenfor:

1
2
3
4
5
6
7

VÆLG
kolonne1, kolonne2
FRA
tabel_1,
tabel_2
HVOR
join_condition;

I denne form angiver du alle sammenføjede tabeller i FROM -klausulen og sætte sammenkædningsbetingelsen i WHERE-klausul i SELECT -erklæringen. Vi kan omskrive forespørgselseksemplet ovenfor ved hjælp af den implicitte INNER JOIN som følger:

1
2
3
4
5
6
7

VÆLG
productID, productName, categoryName
FRA
produkter,
kategorier
HVOR
products.categoryID = categories.categoryID;

Visualiser INNER JOIN ved hjælp af Venn-diagram

Write a Comment

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *