Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] Łaczenie 2 tabel i wyciaganie krotki nawet gdy dane są tylko w 1 tabeli.
Forum PHP.pl > Forum > Bazy danych > MySQL
Sajrox
Witam,

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:
  1. SELECT *
  2. FROM
  3. units AS u,
  4. units_descriptions AS ud
  5. WHERE
  6. (
  7. 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
  8. 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')
  9. )
  10. ud languages_code = 'pl'


Generalnie pobieram tutaj po wersji językowej która jest umieszczona w tabeli units_descriptions.


Obecnie robie to tak:

  1. SELECT *
  2. FROM
  3. units AS u JOIN
  4. units_descriptions AS ud ON u.id = ud.units_id
  5. WHERE
  6. u.id = ud.units_id AND
  7. 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
  1. SELECT u.*, (SELECT ud.short_description FROM units_descriptions AS ud WHERE ud.units_id = u.id AND ud.languages_code = 'pl')
  2. FROM units AS u
Mchl
LEFT JOIN

Kod
SELECT
*
FROM
units AS u
LEFT JOIN
units_descriptions AS ud
ON
u.id = ud.units_id
WHERE
ud.languages_code = 'pl'


[edit]

Haha... nie ma tak łatwo. Jesze podzapytanie tongue.gif

Kod
SELECT
*
FROM
units AS u
LEFT JOIN (
SELECT * FROM units_descriptions WHERE ud.languages_code = 'pl') AS ud
ON
u.id = ud.units_id
Sajrox
Genialne smile.gif Że sam na to nie wpadłem winksmiley.jpg Dzięki !
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.