Då jag vill plocka ut lite värden, inkl. antalet underkategorier och bilder som finns, från en särskild kategori använder jag följande SQL-sats:
SELECT
c1.CatID,
c1.RefCatID,
c1.Name,
[red](SELECT COUNT(*) FROM categories c2 WHERE c2.RefCatID=c1.CatID) As Subcats,
(SELECT COUNT(*) FROM images WHERE CatID=c1.CatID) As Images [/red]
FROM categories c1
WHERE c1.RefCatID=0
ORDER BY CatID asc
Detta fungerar fint på min jobbdator där jag kör MySQL 5.0. När den körs på webbhotellet som använder MySQL 4.1 klagar den dock på rödmarkerad text.
Är jag ute och snurrar som skriver som jag gör? Någon som har bättre lösning på hur jag får med antal underkategorier och antal bilder i SQL-satsen?
Jag antog att det inte är speciellt krävande iom det endast hämtar en liten COUNT() från de andra tabellerna, men jag kanske har fel?
Har denna typ av SELECT-möjlighet inte varit tillgänglig förrän i version 5, kanske?
Felmeddelandet ser ut som de flesta SQL-fel:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT COUNT(*) FROM images WHERE CatID=c1.CatID) As Images FRO
Uppskattar om någon kan upplysa mig =)
Tackar på förhand!
SELECT
c1.CatID,
c1.RefCatID,
c1.Name,
COUNT(DISTINCT c2.CatID) as SubCats,
COUNT(DISTINCT i.ImageID) as Images
FROM categories c1
LEFT OUTER JOIN categories c2 ON c2.RefCatID=c1.CatID
LEFT OUTER JOIN images i ON i.CatID=c1.CatID
WHERE c1.RefCatID=0
GROUP BY c1.CatID,
c1.RefCatID,
c1.Name
ORDER BY c1.CatID asc