Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> count i where
acztery
post
Post #1





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


witam,

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:

  1. SELECT * , count( favcat.Id ) AS count_f , cat.Id AS Id
  2. FROM cat LEFT JOIN favcat ON cat.Id = favcat.CatId
  3. 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:

  1. SELECT * , count( favcat.Id ) AS count_f , cat.Id AS Id
  2. FROM cat LEFT JOIN favcat ON cat.Id = favcat.CatId WHERE favcat.UserId=1
  3. GROUP BY cat.Id


moze jakies pomysły..

ROZWIAZANIE

  1. SELECT * , count( favcat.Id ) AS count_f, cat.Id AS Id
  2. FROM cat LEFT JOIN favcat ON cat.Id = favcat.CatId AND favcat.UserId =2
  3. GROUP BY cat.Id
  4. LIMIT 0, 30


Ten post edytował acztery 20.08.2008, 15:03:17
Go to the top of the page
+Quote Post
leviath
post
Post #2





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 3.11.2005

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


Skorzystaj z RIGHT JOIN
Go to the top of the page
+Quote Post
osiris
post
Post #3





Grupa: Zarejestrowani
Postów: 121
Pomógł: 15
Dołączył: 19.07.2007

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


Mam jedna uwage co do struktury tabeli 'ulubione kategorie'.

Rozumiem ze teraz pole ID jest kluczem glownym. Jesli tak to jest to niepotrzebne bo kluczem glownym w tym przypadku moga byc dwie kolumny UserId i CatId, a niepotrzebne kolumny (szczegolnie z zalozonymi indeksami - a tak przynajmniej powinno byc w Twoim wypadku) to oczywiscie spadek wydajnosci przy wstawianiu danych.

Pozdrawiam
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: 21.08.2025 - 12:16