Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> select z 2ma joinami i wykluczajacymi sie warunkami
misty
post
Post #1





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

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


Czesc, mam nastepujacy problem z zapytaniem: uzytkownik moze miec item'y lub moze miec grupy ktore maja itemy.

W tym pierwszym przypadku dane sa przechowywane w tabeli user_to_items, zas w drugim mamy item_to_groups
Potrzebuje 1 zapytanie wyciagnac id oraz name itemow:

  1. SELECT DISTINCT(item.id), item.name
  2. FROM items
  3. LEFT JOIN user_to_item ON user_to_item .item_id = item.id
  4. LEFT JOIN item_to_group ON item_to_group.item_id = item.id
  5. WHERE 1
  6. AND user_to_item.user_id = 117
  7. AND item_to_group.group_id IN (77,75,76,81,82)


Jak widac, mam podane group_id. Problem jest taki ze te warunki sie wykluczaja bo mam AND user_to_item.user_id = 117 oraz AND item_to_group.group_id IN (77,75,76,81,82) i wynik jest 0.
Gdy zas usune AND user_to_item.user_id = 117 z sql'a to otrzymam wyniki odpowiednie dla tego drugiego warunku (AND item_to_group.group_id IN (77,75,76,81,82) ) niestety trace wtedy to co jest w tabeli user_to_item. I na odwrot to samo - jak zostawie warunek dla user_to_item to otrzymam wyniki z tej tabeli jednak strace to co jest w item_to_group.

Czy moge to wyciagnac jakos 1 zapytaniem?


pzdr,
misty

dobra, rozwiazanie okazalo sie banalne, wystarczylo uzyc or:


SELECT DISTINCT(item.id), item.name
FROM items
LEFT JOIN user_to_item ON user_to_item .item_id = item.id
LEFT JOIN item_to_group ON item_to_group.item_id = item.id
WHERE 1
AND( user_to_item.user_id = 117
or item_to_group.group_id IN (77,75,76,81,82) )


pzdr,
misty
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 10:00