Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: join z warunkiem
Forum PHP.pl > Forum > Bazy danych > MySQL
elmozaur
Dziendobry
bez owijania w bawelne problem jest taki:

chcialbym zrobic left join na 2 tabelach:
SELECT tresc_dynamic.*, tresc_dynamic_lang.* FROM tresc_dynamic LEFT JOIN (tresc_dynamic_lang) ON (tresc_dynamic.id=tresc_dynamic_lang.l_id) WHERE id='$newsId'

i to dziala ok
Teraz aby utrudnic chcialbym dolaczyc jedynie rekord spelniajacy warunek taki ze jego kolumna lang = 'en'
SELECT tresc_dynamic.*, tresc_dynamic_lang.* FROM tresc_dynamic LEFT JOIN (tresc_dynamic_lang) ON (tresc_dynamic.id=tresc_dynamic_lang.l_id AND tresc_dynamic_lang.lang='$lang') WHERE id='$newsId'

mimo ze to dziala jest to chyba niedobre rozwiazanie

Pytanie:
czy to drugie pytanie da sie zapisac jakos tak aby bylo zgodne ze standardami - czyli chyba aby warunek o kolumnie lang byl za where questionmark.gif?
thek
A nie możesz w WHERE na sam koniec ograniczyć wyświetlanie tylko tych z lang = 'en', czyli:
  1. WHERE id='$newsId' AND tresc_dynamic_lang.lang = 'en'

Poza tym możesz jeszcze zrobić podzapytanie...
  1. SELECT tresc_dynamic.*, jezyki.* FROM tresc_dynamic LEFT JOIN ( SELECT * FROM tresc_dynamic_lang WHERE lang = 'en') AS jezyki ON (tresc_dynamic.id=jezyki.l_id) WHERE id='$newsId'
, ale musisz sam sprawdzić co będzie wydajniejsze w Twoim wypadku.
wookieb
  1. SELECT tresc_dynamic.*, jezyki.* FROM tresc_dynamic LEFT JOIN tresc_dynamic_lang AS jezyki ON (tresc_dynamic.id=jezyki.l_id AND jezyki.lang = 'en') WHERE id='$newsId'
elmozaur
dziekuje. wkoncu udalo mi sie zmusic Zenda do czytania takiego zapytania
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.