Citat:
Originally posted by eg0master@Aug 12 2005, 13:41
Om man använder mysql är subquerys dumt (eftersom det bara stöds i de senaste versionerna och mysqlinstallationer har en tendens att inte vara helt up-to-date), men annars är det ju ett utmärkt sätt att låta databasen göra jobbet istf att göra det själv i kod.
Dock är väl din fråga knappast något som verkligen kräver en subquery... Det gör den bara onödigt komplicerad.
Kod:
SELECT c.category_id, c.category_name, count*
FROM shop_category c, shop_product p
WHERE c.category_id = p.category_id
GROUP BY c.category_id, c.category_name
Det är ju bara listan i group by som måste innehålla alla kolumner från shop_category du skall plocka ut (och sluta göra select * - det är en dålig ovana - ange alltid vad du vill ha).
Min query blir dessutom sannolikt snabbare eftersom den slipper göra en subquery.
|
Det där tipset är jag mycket tacksam för, och ska byta ut min query. Nästan så man skäms ju
Jag kommer inte att lyssna på ditt tips om att specifikt ange fält, utan kör på *. Visserligen håller jag med dig om att det i teorin är bäst att ange sina fält. Dock inte i praktiken

(Jag vet vad alla fält heter ändå. Det går även att justera detta i efterhand om man känner för det, men för att spara tid (och även få snabbare querys -- källa: grazzy) kör jag * just nu...)
EDIT: Det finns ett litet problem när jag byter till din query: De kategorier som är tomma (dvs det saknas produkter i dem) kommer inte med nu, vilket jag vill att de ska göra, och få en product_count på 0 eller NULL... Ska fundera på detta efter "frukost"...