JOIN: łączenie dwóch tabel
Dane o jednej rzeczy często leżą w kilku tabelach. Uczeń ma u siebie tylko numer klasy, a jej nazwa stoi w tabeli klasy. JOIN skleja wiersze z dwóch tabel w pary.
Po co łączyć tabele?
Jedna rzecz, dwie tabele. Uczeń ma u siebie tylko numer klasy, a nazwa klasy leży w tabeli klasy.
Złączenie dobiera pary: wiersz z jednej tabeli i pasujący wiersz z drugiej. Każda para to jeden wiersz wyniku.
ON mówi, kiedy wiersze pasują: zwykle numer w jednej tabeli równa się id w drugiej.
uczniowie JOIN klasyZielona część wspólna to pary, czyli wiersze z obu tabel, które spełniają ON u.klasa_id = k.id.
Po ON piszesz, która kolumna ma pasować do której. Tu numer klasy ucznia do id klasy. Klasy bez uczniów zostają bez pary i odpadają.
To zapytanie możesz zmienić: kliknij w nie, wpisz swoje i naciśnij Enter. Uczniowie odegrają Twoją wersję.
FROM uczniowie: 6 wierszy w szeregu. Każdy wiersz to jedna postać, a kartki pod nią to kolumny.
| imie | nazwisko | klasa_id |
|---|---|---|
| Ola | Mazur | 1 |
| Maja | Kaczmarek | 1 |
| Filip | Grabowski | 1 |
| Szymon | Michalski | 2 |
| Lena | Król | 2 |
| Antoni | Wieczorek | 2 |
Aliasy tabel skracają zapis: u zamiast uczniowie, k zamiast klasy. Po złączeniu działa zwykłe WHERE.
FROM uczniowie AS u: 6 wierszy w szeregu. Każdy wiersz to jedna postać, a kartki pod nią to kolumny.
| imie | nazwisko | klasa_id |
|---|---|---|
| Ola | Mazur | 1 |
| Maja | Kaczmarek | 1 |
| Filip | Grabowski | 1 |
| Szymon | Michalski | 2 |
| Lena | Król | 2 |
| Antoni | Wieczorek | 2 |
Wychowawcę każdej klasy znajdziesz, łącząc klasy z nauczycielami.
FROM klasy AS k: 4 wiersze w szeregu. Każdy wiersz to jedna postać, a kartki pod nią to kolumny.
| nazwa | wychowawca_id |
|---|---|
| 3a | 1 |
| 3b | 3 |
| 2a | 2 |
| 2b | NULL |
Gdy kolumna o tej samej nazwie jest w obu tabelach, musisz napisać, z której ją bierzesz.
FROM uczniowie AS u: 6 wierszy w szeregu. Każdy wiersz to jedna postać, a kartki pod nią to kolumny.
| id | imie | nazwisko | klasa_id |
|---|---|---|---|
| 1 | Ola | Mazur | 1 |
| 3 | Maja | Kaczmarek | 1 |
| 4 | Filip | Grabowski | 1 |
| 6 | Szymon | Michalski | 2 |
| 7 | Lena | Król | 2 |
| 8 | Antoni | Wieczorek | 2 |