兩個表格,一個包含問題,另一個包含每個用戶的答案,如果他們已經回答的話。我試圖拉取由權重(最重要)排序的下一個問題,其中用戶a在答案表中沒有答案。令人不安的MySQL加入操作
我的表是這樣的:
table: app_questions
| id | int(11) | NO | PRI | NULL | auto_increment |
| owneruid | int(11) | YES | | NULL | |
| question | varchar(350) | YES | | NULL | |
| answer_1 | varchar(350) | YES | | NULL | |
| answer_2 | varchar(350) | YES | | NULL | |
| answer_3 | varchar(350) | YES | | NULL | |
| answer_4 | varchar(350) | YES | | NULL | |
| weight | decimal(5,2) | YES | | NULL | |
| datetime | datetime | YES | | NULL | |
table: app_answers
| id | int(11) | NO | PRI | NULL | auto_increment |
| uid | int(11) | YES | | NULL | |
| quid | int(11) | YES | | NULL | |
| answer | int(11) | YES | | NULL | |
| importance | int(11) | YES | | NULL | |
| answer_status | varchar(20) | YES | | NULL | |
| answer_explanation | varchar(200) | YES | | NULL | |
| datetime | datetime | YES | | NULL | |
我已經嘗試了一些變化,但還沒有得到正是我需要的:
SELECT uid ,
question ,
answer_1 ,
answer_2 ,
answer_3 ,
answer_4 ,
weight ,
answer_status
FROM match_questions
LEFT JOIN match_answers ON match_questions.id = match_answers.quid
WHERE answer_status IS NULL
AND EXISTS (SELECT *
FROM match_answers
WHERE uid = 1)
ORDER BY weight DESC LIMIT 1;
SELECT uid ,
question ,
answer_1 ,
answer_2 ,
answer_3 ,
answer_4 ,
weight ,
answer_status
FROM match_questions
LEFT JOIN match_answers ON match_questions.id = match_answers.quid
WHERE uid IS NULL
AND answer_status IS NULL
ORDER BY weight DESC LIMIT 1;
SELECT uid ,
question ,
answer_1 ,
answer_2 ,
answer_3 ,
answer_4 ,
weight ,
answer_status
FROM match_questions
LEFT JOIN match_answers ON match_questions.id = match_answers.quid
WHERE answer_status IS NULL
AND uid IS NULL
ORDER BY weight DESC LIMIT 1;
任何指導讚賞。
你可以創建一個sqlfiddle例子,我想做到這一點,但沒有樣本數據,你可以複製和使用它http://www.sqlfiddle.com/#!2/68aed – skv
樣本數據和樣本(所需)輸出將使它更容易回答這個問題。 – spencer7593
感謝球員,peterm設法幫助。我將來會使用sqlfiddle。 – Jared