* 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
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`
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 ...