Mysql query ne deluje pravilno
4 naročniki
4 naročniki
Imam spodnjo tabelo
Recimo, da želim izpisati vse vnose s parentid = 0 ampak ob pogoju, da mi še izpiše seštevek kolikokrat se id posameznega vnosa ponovi še v parentid. Upam, da sem razumljivo vprašal.
Zapisal sem query...
SELECT id, (SELECT COUNT(*) FROM categories WHERE parent_id = id) FROM categories WHERE parent_id = 0
ki mi vrne
kar pa ni pravilno, ker bi moralo pri id=3 biti zapisano 2
Recimo, če za test zapišem
SELECT id, (SELECT COUNT(*) FROM categories WHERE **parent_id = 3**) FROM categories WHERE parent_id = 0
count query deluje pravilno
Kakšna ideja, kaj počnem narobe, da mi ne zazna pravilnega id-ja?
4 odgovori
Query deluje povsem pravilno. Ti nepravllno primerjaš stvari, ki jih ne želiš primerjati. :)
Da na kratko razložim kaj delaš narobe: pogoj "WHERE parentid = id" naredi to, da sešteješ vse zapise v tabeli categories, ki imajo polje id enako polju *parentid*, kar je pa pravilno enako nič. Težavo boš rešil z aliasi:
SELECT id, (
SELECT COUNT(*) FROM categories **AS c**
WHERE **c.**parent_id = **categories.**id
)
FROM categories WHERE parent_id = 0;
naredi raje join na isto tabelo (on c1.parent_id=c2.id) in nato daj group by c1.id
dodajam: me je vini prehitel s čisto kul rešitvijo :)