Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z left join. Jeden produkt do wielu kategorii
Forum PHP.pl > Forum > Przedszkole
Octobus
Mam takie tabele

* produkty
id | nazwa | itd

* kategorie
id | id_produktu | kategoria

i teraz chce jednym zapytaniem moc pobrac wszystkie produkty z jednej kategorii. Robie wiec:

Cytat
select * from `kategorie` as `k`
left join `produkty` as `p` on (`k`.`id_produktu` = `p`.`id`)
where `kategoria`="torby"
limit 0, 27


i zwraca za wiele rekordow, bo produkty sa przypisane do wielu kategorii, wiec jeden produkt takim zapytaniem wyskakuje 3 razy na liscie. Jak zrobic zeby wystepowal tylko raz, co takiego zle robie ? Moge oczywiscie dodac:
Cytat
group by `p`.`id`

ale wtedy to zapytanie nie nada sie do zliczenia ilosci produktow w calej kategorii przerabiajac je w ten sposob:
Cytat
select count(`id_produktu`) as `ilosc` from `kategorie` as `k`
left join `produkty` as `p` on (`k`.`id_produktu` = `p`.`id`)
where `kategoria`="torby"
group by `p`.`id`


moge niby pobrac wszystkie dane i zliczyc ile tego jest, ale skoro jest mysql count to chcialbym to zrobic "po ludzku". Byc moze blad jest blachy ale jakos nie moge dojsc do porozumienia z tym ...
trueblue
Nie rób LEFT JOIN - zwykły JOIN.
Pyton_000
A jakim cudem masz przypisany produkt 3x do tej samej kategorii?
Octobus
Cytat(Pyton_000 @ 14.09.2017, 12:55:50 ) *
A jakim cudem masz przypisany produkt 3x do tej samej kategorii?


No i wszysztko jasne tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.