TheClown Skrevet 18. november 2010 Del Skrevet 18. november 2010 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
MailMan13 Skrevet 19. november 2010 Del Skrevet 19. november 2010 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå