Posiadam 2 tabele:
units oraz units_descriptions
Chce pobrac krotki z obu tych tabel jednak w przypadku gdy w 2 tabeli nie ma danych to mimo tego pobieramy krotkę z tabeli gównej a w polu 'description' które jest pobierane z tabeli dołączonej dajemy np NULL.
Próbuję to zrobić tak:
SELECT * FROM units AS u, units_descriptions AS ud WHERE ( EXISTS (SELECT * FROM units_descriptions AS ud2 WHERE ud2.units_id = u.id AND ud.units_id = ud2.units_id AND ud.languages_code = 'pl') OR NOT EXISTS (SELECT * FROM units_descriptions AS ud3 WHERE ud3.units_id = u.id AND ud.units_id = ud2.units_id AND ud.languages_code = 'pl') ) ud languages_code = 'pl'
Generalnie pobieram tutaj po wersji językowej która jest umieszczona w tabeli units_descriptions.
Obecnie robie to tak:
SELECT * FROM units AS u JOIN units_descriptions AS ud ON u.id = ud.units_id WHERE u.id = ud.units_id AND ud languages_code = 'pl'
czyli pobieram krotki tylko wtedy gdy istnieje do nich dana wersja językowa w tabeli units_descriptions.
jednak chciałbym teraz pobierać wszystko z odpowiednią wersją językową lub NULLem
W ostateczności zrobiłem coś takiego, ale średnio mi się to podoba
SELECT u.*, (SELECT ud.short_description FROM units_descriptions AS ud WHERE ud.units_id = u.id AND ud.languages_code = 'pl') FROM units AS u