

SQL - priradenie riadku druhej tabuľky, ak existuje, ak nie, zobrazí sa len riadok prvej
Povedzme, že mám tabuľku FAKTURA s týmito dôležitými položkami:
ID
Meno
PPD_ID
Ďalej mám tabuľku PPD, s týmito dôležitými položkami:
ID
Meno
Datum
Vytvorím príkaz SELECT:
select * from FAKTURA, PPD where FAKTURA.PPD_ID=PPD.ID
Problém je v tom, že mi to priradí len tie faktúry, kde bol vystavený aj PPD. Ja ale potrebujem, aby faktúry dalo všetky a ak existuje aj PPD k faktúre, aby sa priradilo k správnej fakúre. Takýto príkaz je nezmysel, takže ho ani skúšať nebudem, predpokladám, že by to k faktúram, ku ktorým nie je PPD, by postupne priraďovalo každé PPD:
select * from FAKTURA, PPD where FAKTURA.PPD_ID=PPD.ID or FAKTURA.PPD_ID=0
Viem, že je taká možnosť v SQL čo potrebujem, ale neviem si to teraz vybaviť ako to zapísať, lebo som to doteraz nikdy nepotreboval. Vedel by mi niekto poradiť?
Bez záruky, neodzkoušeno...
Skúsil som hľadať, tiež som niečo podobné s LEFT JOIN našiel, ale nebol som si istý, či je to použiteľné aj u mňa, pretože v tom príklade boli pre každý riadok hodnoty v druhej tabuľke. No nič, vyskúšam.
V takovem pripade bys mel pouzit LEFT OUTER JOIN, ne LEFT JOIN
Já bych řekl, že LEFT JOIN je to samé jako LEFT OUTER JOIN. Viz sql_join_left.asp
Jo, a v nekterych je LEFT JOIN zase to same jako obycejny JOIN
A pokud nenapise, pro jakou DB to chce, je lepsi pouzit plny zapis
Neexistuje žiadna databáza, v ktorej by LEFT JOIN bolo to isté ako obyčajný JOIN.
Podľa štandardu SQL92 je slovo OUTER nepovinné - LEFT JOIN je úplne to isté ako LEFT OUTER JOIN.