我有一个答案表,列出了给定问题的可能答案。
possible_answer
id question_id text
1 1 yes
2 1 no
3 2 red
4 2 blue
5 2 green
然后我有一张用户给出的答案表
user_answer
id user_id answer_id
1 10 1
2 10 3
3 11 1
4 11 4
5 12 2
6 12 5
我正在尝试创建一个 MySQL 查询,它将显示用户名、用户对问题 1 的回答(可能为空)和用户对问题 2 的回答(可能为空)。我被卡住了,因为我觉得我需要将多个 LEFT JOINS 组合在一起,但是我得到的输出给了我一个答案,或者两列中的答案相同。
这是我目前所得到的:
SELECT u.name, pa1.text, pa2.text
FROM user u
LEFT JOIN user_answer ua1 ON u.id = ua1.user_id
LEFT JOIN possible_answer pa1 ON ua1.answer_id = pa1.id AND pa1.question_id = 1
LEFT JOIN user_answer ua2 ON u.id = ua2.user_id
LEFT JOIN possible_answer pa2 ON ua2.answer_id = pa2.id AND pa2.question_id = 2
GROUP BY u.id;
我得到的结果如下:
username pa1.text pa2.text
user1 yes NULL
user2 no NULL
user3 NULL blue
当我知道给定用户的两个问题都有条目时。
我group by
在那里有,因为当我没有时,我group by
得到了这样的结果(这有点接近预期的结果),但它们似乎没有显示任何类型的模式:
username pa1.text pa2.text
user1 yes NULL
user1 NULL red
user2 no NULL
user2 NULL NULL
user3 no NULL
user3 NULL blue
任何想法将不胜感激。