Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: JOIN - pytanie
Forum PHP.pl > Forum > Bazy danych > MySQL
aceed
cześć
SQL to dlamnie nadal mimo wszystko abstrakcja dlatego prosze o wyrozumiałość.

Mam dwie tabele, jedna z nich rc_leads przechowuje Lead'y czyli jakies tam rzeczy do zrobienia. Druga re_leads_users_views informacje o tym czy dany uzytkownik (po id) widział już danego Lead'a. W przypadku kiedy go obejrzy tworzony jest w drugiej tabeli rekord ktory zawiera: id usera, id leadu, viewed o wartości Y . Sprawdzanie wartości tego ostaniego pola doklejonego do tabeli rc_leads, pozwala na poziomie PHP znaczyc rekord z rc_leads jako przeczytany przez usera o danym user_id.

Moje zapytanie wyglada nastepująco:
  1. SELECT rc_leads.* , rc_leads_users_views.viewed
  2. FROM rc_leads
  3. LEFT JOIN rc_leads_users_views ON rc_leads.id = rc_leads_users_views.lead_id
  4. WHERE rc_leads_users_views.user_id = '1'
  5. OR rc_leads_users_views.user_id IS NULL
  6. ORDER BY `rc_leads`.`open` DESC


W obecnej chwili dziala to tak ze dla jednego usera w systemie jest ok. Jezeli zozstal dodany rekord w rc_eads_user_views z innym user_id niz to w zapytaniu. To ten rekord nie jest wyswietlany bo nie jest spełniony warunek
  1. WHERE rc_leads_users_views.user_id = '1'
  2. OR rc_leads_users_views.user_id IS NULL

Bo user_id jest i jest inne niz podane w zapytaniu.

Jednym słowem jak zrobic tak ze dla danego usera wyswietla wszytkie leady + pole viewed z wartością dla danego user_id jesli jest czyli Y, bądź puste jezeli nie ma w rc_leads_users_views wpisu dla podanego w zapytaniu user_id i lead_id.

dzieki za ew pomoc i pozdrawiam.
Crozin
Te dodatkowe warunki z WHERE przenieś do ON (jako: ... AND (... OR ...))
tomalec
hej,
"ze dla danego usera wyswietla wszytkie leady" - to niestety śmierdzi mi kartezjanem.
Nie wiem czy dobrze zrozumiałem , co chcesz otrzymać, ale wydaje mi się, że może Ci chodzić o coś w stylu:
  1. SELECT u.*,l.*,IF(uv.id IS NOT NULL,'y') FROM rc_users u, rc_leads l LEFT JOIN rc_leads_users_views uv ON (uv.user_id=u.user_id AND l.lead_id=uv.lead_id);

(sql może mieć jakieś błędy, wkleiłem go tak z palca, bo i tak nie jestem pewien czy oto Ci chodzi)
aceed
działa dzięki wielkie
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.