Gå til innhold

MySQL: få 0 i retur fra en count()


Anbefalte innlegg

Skrevet (endret)

Beklager dårlig trådtittel.

 

Jeg skal liste opp antall treff i en database over kommentarer slik:

  	select 
 e.id,
 e.time,
 e.header,
 count(e_comments.id)
from
 e,
 e_comments
where 
 e_comments.eid = e.id
group by 
 e.id
order by 
 e.time
desc
limit 10

Problemet med dette er at den ikke viser rader som ikke har noen kommentarer knyttet til seg. Hvordan kan jeg få MySQL til å returnere 0 i count() i stedet for å hoppe over hele rada?

 

Jeg legger til at problemet ligger i where-uttrykket, men det må være der, ellers returnerer count() antall kommentarer totalt i tabellen.

Endret av aschj
Videoannonse
Annonse
Skrevet

Er ikke sikker på om jeg forstår spørsmålet helt, men dersom du ønsker å liste ut også de radene som ikke har match i e_comments tabellen din, så må du bruke en ytre-join.

Skrevet

Noe som:

 

select

e.id,

e.time,

e.header,

count(e_comments.id)

from

e,

e_comments

where

LEFT OUTER JOIN e_comments

ON e_comments.eid = e.id

group by

e.id

order by

e.time

desc

limit 10

 

Eller motsatt, er ikke sikker, jobber bare med ORACLE

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...