sql >> Database teknologi >  >> RDS >> Database

Sådan forbinder du flere (3+) tabeller i én erklæring

Problem:

Du vil gerne kombinere data fra mere end to tabeller med kun én SELECT-sætning.

Eksempel:

Der er fire tabeller i vores database:student , teacher , subject og learning .

student tabel indeholder data i følgende kolonner:id , first_name og last_name .

id fornavn efternavn
1 Tom Møller
2 John Forår
3 Lisa Williams
4 Ellie Barker
5 James Moore

teacher tabel indeholder data i følgende kolonner:id , first_name , last_name og subject .

id fornavn efternavn
1 Milano Smith
2 Charles Davis
3 Mærk Moore

subject tabel indeholder data i følgende kolonner:id og name .

id navn
1 Engelsk
2 Kunst
3 Musik

Til sidst, learning tabel indeholder data i følgende kolonner:id , mark , subject_id , student_id og teacher_id .

id marker emne-id student_id teacher_id
1 4 1 2 1
2 5 2 3 2
3 4 3 1 3
4 3 2 1 2
5 2 3 5 3
6 3 3 4 2

Vi vil gerne vide, hvilke elever der studerer engelsk, musik og kunst, samt hvilke lærere der instruerer disse klasser. Vælg faget, efternavnet på den studerende, der tager det pågældende kursus, og efternavnet på den lærer, der leverer det pågældende kursus.

Løsning:

Brug flere JOIN s i din forespørgsel:

SELECT l.name AS subject_name,   
  t.last_name AS student_last_name, 
  st.last_name AS teacher_last_name 
FROM learning AS l  
JOIN subject s ON l.subject_id=s.id
JOIN student st ON l.student_id=st.id
JOIN teacher t ON l.teacher_id=t.id; 

Denne forespørgsel returnerer poster med navn på kursusfaget og efternavne på elever og lærere:

emnenavn s_efternavn t_efternavn
Musik Moore Møller
Kunst Davis Møller
Engelsk Smith Forår
Kunst Davis Williams
Musik Davis Barker
Musik Moore Moore

Disse data kommer fra tre tabeller, så vi er nødt til at samle alle disse tabeller for at få den information, vi søger.

Diskussion:

Hvis du gerne vil kombinere data gemt i flere (mere end to) tabeller, skal du bruge JOIN operatør flere gange. Først forbinder du to tabeller, som du plejer (ved hjælp af JOIN , LEFT JOIN , RIGHT JOIN , eller FULL JOIN , som passende). JOIN operation opretter en "virtuel tabel", der gemmer kombinerede data fra de to tabeller. I vores eksempel er resultattabellen en kombination af learning og subject tabeller.

Det næste trin er at forbinde denne resultattabel med den tredje tabel (i vores eksempel, student ). Dette er ligesom en almindelig JOIN :du tilslutter dig den "virtuelle tabel" og den tredje tabel med en passende betingelse. Denne betingelse bør generelt omfatte en eller flere kolonner fra den ekstra tabel (student ) og en eller flere kolonner fra den "virtuelle tabel". I vores eksempel refererer vi til student tabel i den anden JOIN-tilstand.

På dette tidspunkt har vi en ny virtuel tabel med data fra tre tabeller. Det sidste trin er at tilføje data fra den fjerde tabel (i vores eksempel, teacher ). og deltag ved hjælp af nøglen fra disse tabeller (i vores eksempel, id fra teacher tabel og teacher_id fra learning tabel).

Hvis du skal deltage i et andet bord, kan du bruge en anden JOIN operatør med en passende betingelse i ON-klausulen. I teorien kan du deltage i så mange borde, du vil.


  1. Hvordan kan jeg beskytte MySQL brugernavn og adgangskode mod dekompilering?

  2. Maksimering af databaseforespørgselseffektivitet til MySQL - del 1

  3. Sådan formateres tal med et minus/plus-log i Oracle

  4. SSIS kan ikke gemme pakker og genstarter Visual Studio