7
我需要帮助显示当前用户尚未投票的一个随机结果。MySQL:显示用户未投票的一个随机结果
目前我的数据库设置,我已经试过可以http://sqlfiddle.com/#!2/2f91b/1
发现基本上我可以使用此查询隔离各个项目的最后一个查询:
SELECT a.img_url, a.item_id, a.user_id, a.img_status, b.item_question, c.user_name, c.user_fbid, d.voter_id, count(d.img_id) AS totalVotes
FROM os_photos a
LEFT JOIN os_items b ON a.item_id = b.item_id
LEFT JOIN os_users c ON a.user_id = c.user_id
LEFT JOIN os_votes d ON a.img_id = d.img_id
GROUP BY a.img_id
ORDER BY RAND()
LIMIT 1
我的问题是:随着SQL知识我有,我无法孤立的结果,只显示用户#2没有投票的行。我意识到问题在于当我使用group by时,它结合了voter_id,因此我无法检查用户#2是否有任何输入。
实施例:
Item # | voter_id
1 | 2
1 | 3
2 | 2
3 | 1
3 | 4
4 | 3
4 | 1
5 | 1
5 | 2
利用上述样本集,将得到的产品应该是项#3,#4或还没有被表决任何其他项目。
非常感谢您的帮助,建议和知识。
我试着你的代码在SQLfiddle中,它给了我一个错误。我还添加了一个例子,说明结果应该如何帮助。 – 2012-07-16 08:45:10
@MichaelCheung修正了...... WHERE应该总是在GROUP BY之前。我贴了它错误的行;)对不起 – poncha 2012-07-16 08:47:12
谢谢,这固定的查询,但它仍然给我的结果,它不应该。例如,当它不应该是因为用户#2已经对项目#3进行投票时,它给了我项目#3的结果。 – 2012-07-16 08:57:18