的MySQL。
我有两张桌子,一张是"问题"另一个是"答案"
问题表:
- question_id
- user_id
- question
答案表:
- answer_id
- question_id
- user_id
- answer
- correct
目标是根据用户的ID获取所有问题(和关联答案)。我已经能够得到所有的答案,但我只能得到一个问题。我可以理解为什么它只能得到一个问题,但我不知道如何获得每个答案的问题文本。
这是我现在正在使用的代码。其中id_in
是已保存过程的输入值。问题在于它为我提供了每个问题的所有答案,但所有问题都返回相同的问题文本。我觉得这种联合可能会更好,但我们还没有开始学习它们,我几乎不了解它们。
BEGIN
DECLARE question_text VARCHAR(40);
SELECT question INTO question_text FROM questions WHERE user_id = id_in;
SELECT question_text, Q.* FROM answers AS Q WHERE user_id = id_in;
END
是的,这是家庭作业。我完全不知道自己需要做什么。
答案 0 :(得分:1)
左连接允许左表中的所有内容,只允许右表中的匹配内容。在我的例子中,我可能会混淆A和Q,但我认为这是它的一般要点。您也可以使用user_id = in_id并将其移至磨损,但加入时的过滤器应该更快。
SELECT
Q.QUESTION
, A.ANSWER
, A.CORRECT
FROM ANSWERS A
LEFT JOIN QUESTION Q
ON A.QUESTION_ID = Q.QUESTION_ID
AND A.USER_ID = Q.USER_ID
AND A.USER_ID = ID_IN
AND Q.USER_ID = ID_IN