現在のユーザーが投票していないランダムな結果を表示するのに助けが必要です。現在、私のデータベースのセットアップと私が試してみました最後のクエリは基本的に私はこのクエリを使用して、個々の項目を分離することができますhttp://sqlfiddle.com/#!2/2f91b/1MySQL:投票していないランダムな結果を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が投票していない行のみを表示するように結果を分離することはできません。私はグループを使用するときに問題が発生することを認識しています。これは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で、それは私にエラーを与えた。私はまた、結果がどのように見えるかの例を追加しました。 –
@MichaelCheungは固定されています... 'WHERE'は常に' GROUP BY'の前に行くべきです。私は間違った行にそれを貼り付けた;)申し訳ありません – poncha
ありがとう、それは、クエリを修正しましたが、それは私に結果ではないはずです。たとえば、ユーザー#2が既にアイテム#3に投票していたため、それは不要なときにアイテム#3の結果を返します。 –