Hallo,
sql = "SELECT
t1.COUNT(*),
t2.id,
t2.nameFROM
blog_articleAS
t1blog_categorys
AS
t2WHERE
t2.id=
t1.cat";
Du hast hier mehrere Fehler:
a) hast Du das Komma zwischen Deinen beiden Tabellen vergessen,,
b) Deine Spalten falsch begrenzt,
c) hättest Du die ersten beiden Fehler nicht gemacht, so verläßt Du Dich auf
MySQLs Eigenart bei der Verwendung von Aggregatfunktionen nicht die anderen
Spalten gruppieren zu müssen,
d) finde ich explizite Join-Syntax schöner als die implizite. Du hättest somit
die ersten Fehler nicht gemacht.
Schreiben wir es einfach mal in SQL:
SELECT
COUNT(*), -- Du kannst nicht einfach nur die Datensätze einer Tabelle zählen
t2.id,
t2.name
FROM
blog_article t1 -- AS ist optional und wird nicht von allen DBMS verstanden
INNER JOIN
blog_categorys t2
ON
t2.id = t1.cat
GROUP BY
t2.id, -- wenn Du nach diesen Spalten nicht gruppierst, sind die
t2.name -- Werte innerhalb einer Gruppe in diesen Spalten zufällig
Möchtest Du die Schemanamen begrenzen, so geht dies mit dem Backtick, Du musst aber jeden einzelnen Teil begrenzen:
SELECT
COUNT(*), -- COUNT wird nicht begrenzt, da Name einer Funktion,
-- nicht einer Spalte
`t2`.`id`, -- sowohl Tabellen(alias)name als auch Spaltenname sind
`t2`.`name` -- zu begrenzen, wenn man begrenzen will,
-- sonst hätte man eine Spalte mit einem Punkt im Namen.
FROM
`blog_article` `t1`
INNER JOIN
`blog_categorys` `t2`
ON
`t2.id` = `t1.cat`
GROUP BY
`t2`.`id`,
`t2`.`name`
Freundliche Grüße
Vinzenz