Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> JOIN - pytanie
aceed
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 18.10.2009

Ostrzeżenie: (0%)
-----


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.

Ten post edytował aceed 18.10.2009, 21:27:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Te dodatkowe warunki z WHERE przenieś do ON (jako: ... AND (... OR ...))
Go to the top of the page
+Quote Post
tomalec
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 7.01.2006

Ostrzeżenie: (0%)
-----


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)
Go to the top of the page
+Quote Post
aceed
post
Post #4





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 18.10.2009

Ostrzeżenie: (0%)
-----


działa dzięki wielkie
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 12:41