Gå til innhold

Problem med left join og COUNT


Anbefalte innlegg

Hei, jeg har ett stort problem med en side jeg lager for øyeblikket. Den fungerer slik. Den skal liste de ti siste statusene. Disse statusene kan folk rate opp og ned (nette ligger lagret i en annen tabell). Jeg vil gjerne counte hvor mange av hver det er. Disse ratene ligger i en samlet tabell, rate_way = 1 er positivt og rate_way = 0 er negativ. Hva er galt med spørringen min? Jeg får bare ett av 3 resultater opp, uavhengi om det finnes noen votes på noen av dem.

 

SELECT 
	t1.*,
	COUNT(t3.rate_id) as 'rate_up',
	COUNT(t4.rate_id) as 'rate_down'
FROM
	sl_status t1
LEFT JOIN
	sl_rate AS t3 ON status_id = t3.rate_status AND t3.rate_way = 1
LEFT JOIN
	sl_rate AS t4 ON status_id = t4.rate_status AND t4.rate_way = 0
ORDER BY t1.status_id DESC LIMIT 10

Lenke til kommentar
Videoannonse
Annonse

Fordi du mangler "group by" for å fortelle hva det skal aggregeres på. Uten den vil COUNT() returnere antall i hele settet. Setter du en "group by status_id" vil den aggregere og gi en rad per unike per status_id.

 

Du kan normalt heller ikke velge ut ikke aggregerte kolonner som det ikke er gruppert på, siden verdien av dem ikke vil være entydig definert. Skjønner ikke helt hvordan du får ut noen rader i det hele tatt, normalt vil de fleste DBMS gitt deg en feil på den der.

Lenke til kommentar

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...