| FAQ |
| Kalender |
|
|
#11 | ||
|
|||
|
Har WN som tidsfördriv
|
Magnus_A: Tack så mycket, detta var klockrent!
![]() Obe: Som bjorne säger så är ju det problemet att alla artiklar (43955st) som inte har kommentar skrivs också ut. vilket jag inte vill, jag var nog lite otydlig i min första tråd, ber om ursäkt isåfall. men tack ändå
|
||
|
|
Svara med citat
|
|
|
#12 | |||
|
||||
|
Medlem
|
Ok, men en WHERE-sats är ju inte så svårt att lägga till. Generellt sett är joins bättre än subquerys.
Senast redigerad av obe den 2009-12-04 klockan 11:53 |
|||
|
|
Svara med citat
|
|
|
#13 | ||
|
|||
|
Flitig postare
|
Det hjälper inte med en WHERE sats, trust me.
Med LEFT JOIN:en kommer 1 rad för varje artikel att väljas för alla artiklar som har 0 eller 1 kommentar. Alltså kommer COUNT(*) ge 1 de fallen. Man kan lösa det genom att använda en INNER JOIN istället som gör att bara artiklar som har 1 eller flera kommetarer väljs. Men då listas ju inga artiklar med 0 kommentarer.
|
||
|
|
Svara med citat
|
|
|
#14 | |||
|
||||
|
Supermoderator
|
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. |
|||
|
|
Svara med citat
|
|
|
#15 | |||
|
||||
|
Medlem
|
Citat:
Du missade nog "GROUP BY".
|
|||
|
|
Svara med citat
|
|
|
#16 | ||
|
|||
|
Klarade millennium-buggen
|
Citat:
|
||
|
|
Svara med citat
|
|
|
#17 | |||
|
||||
|
Supermoderator
|
Den bästa lösningen är ändå att köra en seperat kolumn i artikel-tabellen och räkna antalet kommentarer där. Blir ju en extra SQL-fråga vid in/borttagning av kommentar men slipper köra en GROUP BY/ORDER BY.
|
|||
|
|
Svara med citat
|
|
|
#18 | ||
|
|||
|
Flitig postare
|
Citat:
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. |
||
|
|
Svara med citat
|
| Svara |
|
|