Mam taki kłopot.
Mam 2 tabele
1. cat - kategorie ( Id, Name, Act )
2. favcat - ulubione kategorie ( Id, CatId, UserId, Date )
i teraz chodzi o to : dla zalogowanych użytkowników w miejscu gdzie listuje kategorie kategoria która znajduje sie w ulubionych dla danego usera ma byc jakoś odznaczona - to robie w smarty sobie.. )
mam takie zapytanie:
SELECT * , count( favcat.Id ) AS count_f , cat.Id AS Id FROM cat LEFT JOIN favcat ON cat.Id = favcat.CatId GROUP BY cat.Id
ale to mi robi dla wszystkich rekordów w tabeli favcat jak dodam warunek ( favcat.UserId = 1 ) to pokazuje tylko te kategorie które są dodane do ulubionych...
wiec to nied ziała:
SELECT * , count( favcat.Id ) AS count_f , cat.Id AS Id FROM cat LEFT JOIN favcat ON cat.Id = favcat.CatId WHERE favcat.UserId=1 GROUP BY cat.Id
moze jakies pomysły..
ROZWIAZANIE
SELECT * , count( favcat.Id ) AS count_f, cat.Id AS Id FROM cat LEFT JOIN favcat ON cat.Id = favcat.CatId AND favcat.UserId =2 GROUP BY cat.Id LIMIT 0, 30