从多个表中选择多个值

时间:2015-10-02 15:31:40

标签: mysql

的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

是的,这是家庭作业。我完全不知道自己需要做什么。

1 个答案:

答案 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