Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL : Make HAVING select also "null"

I have two tables : dilemme and like. The first one contains articles and the second one contains votes. The script SELECT randomly one article to show and the user can vote (it's like and dislike).

I want to make a query that shows only the articles that have more than - 5 voting, the articles that has no vote are equal to 0.

So I tried this :

SELECT d.ph1, d.ph2, d.id, SUM(l.vote) AS score
FROM dilemme d
LEFT JOIN like l
ON d.id = l.id_dilemma
WHERE d.valid = 'yup'
GROUP BY d.id HAVING SUM(l.vote) > 0

It shows me correctly the rows that have at least one vote and that the sum of the votes are more than 0. Which is nice but, how to select also articles without vote ?

I tried a bunch of things and did some research but can't fix my problem. I thought about INSERT INTO like a vote of 0 but I don't think its a good idea since it won't be very an optimized solution.

like image 378
rachids Avatar asked Dec 20 '12 19:12

rachids


1 Answers

This should include either articles that have positive votes, or include articles with no votes by using COUNT(l.id_delemma) = 0

SELECT d.ph1, d.ph2, d.id, SUM(l.vote) AS score
FROM dilemme d
LEFT JOIN like l
ON d.id = l.id_dilemma
WHERE d.valid = 'yup'
GROUP BY d.id 
HAVING 
    SUM(l.vote) > 0
    OR COUNT(l.id_delemma) = 0
like image 130
Michael Fredrickson Avatar answered Sep 24 '22 13:09

Michael Fredrickson