Kom ihåg mig?

klurig mySQL fråga (php)

 
Ämnesverktyg Visningsalternativ
Oläst 2009-12-05, 16:59 #1
Bjorne Bjorne är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2009
Inlägg: 374
Bjorne Bjorne är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2009
Inlägg: 374
Citat:
Ursprungligen postat av FredrikMH Visa inlägg
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.
Bjorne är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 
Ämnesverktyg
Visningsalternativ

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 12:56.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017