Sobes.tech
Junior

Čo je ľavé spojenie (left join) v SQL?

sobes.tech AI

Odpoveď od AI

Ľavé spojenie (LEFT JOIN alebo LEFT OUTER JOIN) v SQL sa používa na spojenie riadkov z dvoch tabuliek.

Výsledok LEFT JOIN zahŕňa:

  • Všetky riadky z ľavej (prvej) tabuľky.
  • Zodpovedajúce riadky z pravej (druhej) tabuľky, kde sa splní podmienka spojenia.
  • Pre riadky ľavej tabuľky, ktorým chýba zodpovedajúci riadok v pravej, budú stĺpce z pravej tabuľky obsahovať hodnoty NULL.

Príklad syntaxe:

SELECT <zoznam_stĺpcov>
FROM <ľavá_tabuľka> AS L
LEFT JOIN <pravá_tabuľka> AS R ON L.<spájací_stĺpec> = R.<spájací_stĺpec>;

Schéma práce:

Prebieha prehľadávanie každého riadku ľavej tabuľky. Pre každý riadok sa hľadá zodpovedajúci v pravej tabuľke podľa podmienky ON.

  • Ak sú zodpovedajúce riadky nájdené, riadok ľavej tabuľky sa spojí so všetkými zodpovedajúcimi riadkami pravej tabuľky.
  • Ak zodpovedajúce riadky nie sú nájdené, riadok ľavej tabuľky sa zahrnie do výsledku a stĺpce z pravej tabuľky budú obsahovať NULL.

Vizualizácia:

Predstavte si dve množiny dát: Left (ľavá tabuľka) a Right (pravá tabuľka). LEFT JOIN vráti všetky prvky z Left a tiež tie prvky z Right, ktoré majú zodpovedajúci záznam v Left. Ak v Left existujú prvky bez zodpovedajúceho v Right, tieto prvky z Left budú stále zahrnuté vo výsledku, ale ich zodpovedajúce polia z Right budú prázdne (NULL).

Porovnanie s inými typmi JOIN:

Typ JOIN Popis
INNER JOIN Vráti iba riadky, kde je zhoda medzi oboma tabuľkami.
LEFT JOIN Vráti všetky riadky z ľavej tabuľky a zodpovedajúce riadky z pravej. NULL pre nezodpovedajúce riadky z pravej.
RIGHT JOIN Vráti všetky riadky z pravej tabuľky a zodpovedajúce riadky z ľavej. NULL pre nezodpovedajúce riadky z ľavej.
FULL OUTER JOIN Vráti všetky riadky, ak je zhoda v ktorejkoľvek tabuľke. NULL pre nezodpovedajúce riadky v oboch tabuľkách.

Takže, LEFT JOIN je užitočný, keď je potrebné získať úplný zoznam záznamov z jednej tabuľky a doplniť ich informáciami z druhej tabuľky, aj keď pre všetky záznamy nemusia existovať zodpovedajúce údaje.