Citat:
Ursprungligen postat av FredrikMH
Bjorne, jo men det går att lösa. Fast det kanske är långsamt?
SELECT a.*, c.ncomments FROM artiklar a
LEFT JOIN (SELECT pid, count(*) AS ncomments FROM comments GROUP BY pid) AS c
ON c.pid=a.pid
Hur som helst så innebär en kombination av GROUP BY och ORDER BY att en temporär tabell skapas. Det bästa hade varit att spara antalet kommentarer i en egen kolumn i tabellen för artiklarna.
|
Jo fast om man ska vara petnoga (vilket jag tycker man ska vara när det gäller sql) ska det vara:
SELECT a.*, COALESCE(c.ncomments, 0) FROM ...
Annars får du NULL istället för 0 ifall en artikel inte har några kommentarer. Men sen specificierade ju youheardit att topplistan aldrig ska innehålla artiklar med 0 kommentarer och då är ju obes ursprungliga version effektivast igen.