子查询有太多列;一个选择语句中的多个选择

时间:2017-04-23 01:24:33

标签: sql postgresql psql

免责声明:如果这是一个简单的问题或措辞严重的问题,请注意。我是一个菜鸟,我不知道如何说出这个问题,所以我不知道如何谷歌。

我有两张桌子。 Math.question和Math.choice。

Math.question包含一个questiontext列,以及correctanswerid,wronganswerid1 ......等等。

questiontext            correctanswerid     wronganswerID1    wronganswerid2
(question text          101                 102               103
  goes here)

Math.choice包含选择的id和选择文本。

id     choicetext
101    (text goes here)
102    (text goes here)
...

我想从math.question和choicetext中选择questiontext。所以它会显示如下:

questiontext     correctanswerText    wronganswer1text   wronganswer2text
(question text)  (choice text)        (choice text)      (choice text)

我试过这个:

select * from math.choice 
where id in (
    select CorrectAnswer_Choice_ID, Foil1_Choice_ID, Foil2_Choice_ID, Foil3_Choice_ID
    from math.question where id=301
);

我得到的子查询有太多列错误。我不确定从哪里开始。

1 个答案:

答案 0 :(得分:0)

您需要多个join。像这样:

select c.*, q1. choicetext, q2.choicetext, q3.choicetext
from math.choice c left join
     math.question q1
     on q1.id = c.CorrectAnswer_Choice_ID left join
     math.question q2
     on q2.id = c.Foil1_Choice_ID left join
     math.question q3
     on q3.id = c.Foil3_Choice_ID ;