我有一個查詢問題,給定一個帶有帖子的表和一個帶有postsvotes的帖子,其中postvotes包含帖子的ID和投票類型(' UP「或」DOWN「),輸出每個帖子的」UP「票數和」DOWN「票數。當0和麻煩加入時,結果中不包括COUNT(*)
我嘗試使用享有以下查詢:
DROP VIEW P, U, D;
CREATE VIEW P AS SELECT p.id, p.title, p.content FROM posts as p, users as u WHERE u.id = p.userId GROUP BY p.id ORDER BY p.datetime DESC;
CREATE VIEW U AS SELECT count(*) as Uvotes, postId FROM postsvotes, posts WHERE posts.id = postsvotes.postId AND postsvotes.type = 'UP' GROUP BY postId;
CREATE VIEW D AS SELECT count(*) as Dvotes, postId FROM postsvotes, posts WHERE posts.id = postsvotes.postId AND postsvotes.type = 'DOWN' GROUP BY postId;
SELECT Uvotes, Dvotes, u.postId as postId FROM U, D WHERE u.postId = d.postId GROUP BY postId;
它有點兒工作,但只有當至少有1「UP」投票和1「DOWN」投票的帖子,否則不考慮它。我發現問題出現在U和D視圖中,0表決的記錄沒有放在視圖中。
關於如何解決任何想法?
你很可能並不需要這些觀點,一個查詢可以做的工作 - 可能使用'外join'。如果你可以提供樣本數據和預期結果,它會使它更容易理解。 – sgeddes
你想要什麼結果?請在這裏添加更多細節。 –
謝謝!我對SQL不太擅長,但我想單一查詢解決方案是完美的。 ![Posts posts](http://imgur.com/Fu0MU3z.png)![Postsvotes table](http://imgur.com/CWlJeCA.png)[這是我得到的結果](http:// imgur .com/qE51ekf.png),但它也應該包含0個upvotes和/或0個downvotes的行,而現在它只有至少有1個upvote和1個downvote的行。 –