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:
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 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