5

と の 2 つのテーブルがdilemmeありlikeます。最初のものには記事が含まれており、2 番目のものには投票が含まれています。スクリプトはランダムに 1 つの記事を選択して表示し、ユーザーは投票できます (好きか嫌いか)。

- 5 票以上の記事のみを表示するクエリを作成したいのですが、投票のない記事は 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

少なくとも1つの投票があり、投票の合計が0を超えている行を正しく表示します。どちらがいいのですが、投票のない記事も選択するにはどうすればよいですか?

いろいろ試したり、調べたりしましたが、問題を解決できません。INSERT INTO は0票のように考えましたが、最適化されたソリューションではないため、良い考えではないと思います。

4

3 に答える 3

8

これには、賛成票のある記事を含めるか、投票のない記事を含める必要があります。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
于 2012-12-20T19:52:19.523 に答える
3

selectandhaving句で ifnull 関数を使用します。

...having(ifnull(l.vote,0)) > 0...
于 2012-12-20T19:45:37.700 に答える
2
SELECT d.ph1, d.ph2, d.id, SUM(IFNULL(l.vote, 0)) AS score
FROM dilemme d
LEFT JOIN like l
ON d.id = l.id_dilemma
WHERE d.valid = 'yup'
GROUP BY d.id
HAVING score > 0

しかし、これがどのように機能するかはわかりません。アイテムに投票がない場合、そのスコアが 0 より大きくなる方法はありますか?

于 2012-12-20T19:45:47.043 に答える