Vysvetlenie SQL JOIN: INNER, LEFT, RIGHT, CROSS (a čiarkový join)
Published: 2026-02-04
SQL joiny vám umožňujú kombinovať riadky z dvoch tabuliek na základe príbuzných stĺpcov. Tento krátky tutoriál ukazuje štyri základné typy joinov a vysvetľuje, prečo je čiarkový join to isté ako CROSS JOIN.
Vzorové dáta
Vo všetkých príkladoch používame dve tabuľky:
Tabuľka employees:
| id | name | dept_id |
|---|---|---|
| 1 | Ava | 10 |
| 2 | Ben | 20 |
| 3 | Cara | NULL |
Tabuľka departments:
| dept_id | dept_name |
|---|---|
| 10 | Sales |
| 20 | Engineering |
| 30 | Support |
Vyskúšajte joiny vo svojom prehliadači
Ukážkové dopyty môžete spúšťať priamo na stránke. Upravte dopyt a kliknite na Run.
INNER JOIN
Vráti iba riadky, ktoré sa zhodujú v oboch tabuľkách.
Výsledok: Ava/Sales, Ben/Engineering. Cara je vynechaná, pretože nemá zodpovedajúce oddelenie, a Support je vynechané, pretože v oddelení 30 nie je žiadny zamestnanec.
LEFT JOIN (LEFT OUTER JOIN)
Vráti všetky riadky z ľavej tabuľky plus zodpovedajúce riadky z pravej tabuľky. Nezodpovedajúca pravá strana sa stane NULL.
Výsledok: Ava/Sales, Ben/Engineering, Cara/NULL. Všetci zamestnanci sú zachovaní.
RIGHT JOIN (RIGHT OUTER JOIN)
Vráti všetky riadky z pravej tabuľky plus zodpovedajúce riadky z ľavej tabuľky. Nezodpovedajúca ľavá strana sa stane NULL.
Výsledok: Ava/Sales, Ben/Engineering, NULL/Support. Všetky oddelenia sú zachované.
Poznámka: Mnohí vývojári dávajú prednosť prepísaniu
RIGHT JOINnaLEFT JOINzamenením poradia tabuliek kvôli čitateľnosti a konzistentnosti.
CROSS JOIN
Vráti kartézsky súčin (všetky kombinácie) dvoch tabuliek.
Výsledok: 3 × 3 = 9 riadkov (každý zamestnanec spárovaný s každým oddelením).
Čiarkový join (zastaralá syntax)
Čiarkový join je to isté ako CROSS JOIN. Vypisuje tabuľky oddelené čiarkami v klauzule FROM:
Toto vytvorí ten istý kartézsky súčin ako CROSS JOIN. Ak pridáte filter do klauzuly WHERE, správa sa to ako INNER JOIN:
Aj keď je stále platná, čiarková syntax sa považuje za zastaranú, pretože mieša logiku joinu s filtrami a môže byť ťažšie čitateľná. Uprednostnite explicitnú syntax JOIN ... ON.
DbGate: Automatické LEFT JOIN pri rozbaľovaní stĺpcov
V prehliadači dát nástroja DbGate automatické rozbalenie stĺpca s cudzím kľúčom vygeneruje dopyt s LEFT JOIN, aby sa natiahli súvisiace dáta bez zahodenia riadkov z hlavnej tabuľky. Vaša základná množina dát tak zostane nedotknutá, pričom súvisiace polia sú okamžite k dispozícii.
Zhrnutie
INNER JOINponechá iba zodpovedajúce riadky.LEFT JOINponechá všetky riadky z ľavej tabuľky.RIGHT JOINponechá všetky riadky z pravej tabuľky.CROSS JOINvráti všetky kombinácie.- Čiarkový join je to isté ako
CROSS JOIN(a s filtromWHEREsa z neho staneINNER JOIN).