Bug in MySQL 4.1.10a?
Bisher wurden die Einträge der Indexseite mit diesem SQL-Statement abgefragt:
SELECT w.*, a.nick AS nick, cat.name AS categoryname,
count(c.id) AS comments,
l.name AS languagename, l.code AS lc
FROM `x-log_weblog` AS w, `x-log_authors` AS a,
`x-log_languages` AS l, `x-log_categories` AS cat
LEFT JOIN `x-log_comments` AS c ON w.id = c.posting
WHERE a.id = w.author
AND cat.id = w.category
AND w.date <= NOW()
AND w.public = '1'
AND w.language & l.id > 0
GROUP BY w.id
ORDER BY w.date DESC
Doch seit Hostpoint auf MySQL 4.1.10a umgestellt hat, stimmt die Anzahl der Kommentare nicht mehr.
Nach diversen erfolglosen Versuchen die LEFT JOIN
Anweisung zu ändern, habe ich in einem Bugreport eine Lösung gefunden:
count(DISTINCT c.id)
Mangels spezifischer Kenntnisse kann ich nicht beurteilen ob das nun ein Bug oder ein Feature ist. Aber da mehrere Bugreports dazu existieren scheint es eher ein Bug zu sein.
DISTINCT
nicht nötig.Jedoch habe ich noch die 1:n Relation zwischen x-log_weblog und x-log_languages übersehen, welche die Einträge (und damit auch die Kommentare) mehrfach auftauchen lässt und damit das
DISTINCT
nötig macht.Das heisst, mein bisheriges SQL-Statement nutzte einen Bug in MySQL < 4.1.10a !?