Hi,
Meine bescheidenen SQL-Kenntnisse brauchen etwas Support. 3 Tabellen, eine mit Artikeln (a), eine mit Benutzerdaten (b) und eine mit Kommentaren (c). Ich möchte alle Artikel, die Autorendaten und die Anzahl der Kommentare zu einem Artikel. Mein alter Ansatz war wie folgt:
"select a.id
, a.article\_title
, a.article\_text
, a.article\_author\_id
, a.date
, b.email
, b.nick
, COUNT(c.comment\_article\_id
) from
table\_a
as a,
table\_b
as b LEFT JOIN
table\_c
as c ON
a.id
=c.comment\_article\_id
where a.article\_author\_id
=b.id
and a.blog\_name
='blogname'
GROUP BY a.id
order by a.id
desc LIMIT 0, 10;
Wir schwant dunkel, das dieser Ansatz nicht optimal ist, denn wenn ich meine Quellen korrekt interpretiere, muss b jedesmal komplett gescannt werden um die Autorendaten aus b zu ermitteln. Ist es wie folgt besser gelöst (funktionieren tut es)?
"select a.id
, a.article\_title
, a.article\_text
, a.article\_author\_id
, a.date
, b.email
, b.nick
, COUNT(c.comment\_article\_id
) from
table\_a
as a LEFT JOIN
table\_b
as b ON
(a.article\_author\_id
=b.id
) LEFT JOIN
table\_c
as c ON
(a.id
=c.comment\_article\_id
)
where a.blog\_name
='blogname'
GROUP BY a.id
order by a.id
desc LIMIT 0, 10;
Falls gut - weiter optimierbar?
Gruesse, Joachim
Am Ende wird alles gut.