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 не проголосовал. Я понимаю, что проблема заключается в том, что когда я использую группу, она объединяет идентификатор избирателя _, и поэтому я не могу проверить, ввел ли пользователь #2 какой-либо ввод для элемента.

Пример:

Item #  |  voter_id
1       |      2
1       |      3
2       |      2
3       |      1
3       |      4
4       |      3
4       |      1
5       |      1
5       |      2

С приведенным выше набором выборок результирующий элемент должен быть либо пунктом #3, #4, либо любым другим пунктом, по которому не было проведено голосование.

Ваша помощь, советы и знания очень ценятся.

7
задан Michael Cheung 16 July 2012 в 08:43
поделиться