Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z GROUP BY
wojto
post
Post #1





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Warszawa

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


przypuscmy, ze mam tabele produkty (id, id_kategorii) i kategorie (id, nazwa) oraz zapytanie:
[sql:1:e6c7930c85]SELECT COUNT(*) AS ilosc,k.id,k.nazwa FROM produkty p,kategorie k WHERE p.id_kategorii=k.id GROUP BY k.id ORDER BY k.nazwa[/sql:1:e6c7930c85]
i chce, aby wyswietlilo to nazwy wszystkich kategorii, wraz z iloscia produktow w tych kategoriach, ale problem w tym, ze to zapytanie zrobi to ale tylko dla tych kategorii, z przynajmniej jednym produktem

jak zrobic, aby wyswietlic nazwy takze tych kategorii, ktore nie maja produktow?
Codzi mi o zastosowanie jak najmniejszej ilosci zapytan. Nie chce wyswietlac listy kategorii i dla kazdej kolejne zapytanie generowac o ilosc produktow, moze jest inny sposob, aby wyswietlic te kategorie z 0 produktow.
Moze dodac kolejne zapytanie, pobierajace wszystkie kategorie i pozniej laczace jakos te 2 zapytania.

Z gory dziekuje za odpowiedz.


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
FastRed
post
Post #2





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 30.06.2003
Skąd: Chełm

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


[sql:1:49e74e51b7]SELECT COUNT(*) AS ilosc,k.id,k.nazwa
FROM kategorie k
LEFT JOIN produkty p ON(p.id_kategorii=k.id)
GROUP BY k.id
ORDER BY k.nazwa[/sql:1:49e74e51b7]
Może coś takiego?
Go to the top of the page
+Quote Post
wojto
post
Post #3





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Warszawa

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


qrcze, nie wiem, jakos mi to nie dziala
troche uproscilem kod w przykladzie do postu i byc moze teraz cos zle robie w skrypcie
w rzeczywistosci mam tabele:
produkt (id, id_podkategorii), podkategoria(id, id_kategorii), kategoria(nazwa)

czyli np. mam strukture
produkty:
1|1
2|1
3|1
4|2
5|4

podkategorie:
1|1
2|1
3|1
4|3

kategorie:
procesory
myszki
pamieci
monitory

i chce, zeby mi w menu wyswietlilo takie cos:

procesory (4)
myszki (0)
pamieci (1)
monitory (0)

korzystam z zapytania (niby przerobione z twojego, ale moze zle):
[sql:1:20c2c71fb1]SELECT COUNT(*) AS ilosc,k.id,k.nazwa FROM ".PREFIX."podkategorie pk,".PREFIX."kategorie k LEFT JOIN ".PREFIX."produkty p ON(p.id_podkategorii=pk.id) WHERE pk.id_kategorii=k.id GROUP BY k.id ORDER BY k.nazwa[/sql:1:20c2c71fb1]

jak usune WHERE warunek po nim, to wyswietla wszystkie kategorie, ale w nawiasach wszedzie jest ta sama liczba i jakas duza

jakby ktos mogl napisac poprawny kod zapytania, to bylbym wdzieczny


--------------------
Go to the top of the page
+Quote Post
FastRed
post
Post #4





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 30.06.2003
Skąd: Chełm

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


[sql:1:72d09ca34e]SELECT COUNT(p.id) AS ilosc, k.nazwa
FROM kategorie k
LEFT JOIN podkategorie pk ON(pk.id_kategorii = k.id)
LEFT JOIN produkty p ON(p.id_podkategorii = pk.id)
GROUP BY k.id
ORDER BY k.nazwa[/sql:1:72d09ca34e]
Przetestowałem na localu i działa.
Go to the top of the page
+Quote Post
wojto
post
Post #5





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Warszawa

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


thx, u mnie tez dziala
masz u mnie wirtualne piwo smile.gif


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