多对一的SQL查询

时间:2017-02-01 12:15:14

标签: sql sql-server database join

我有3个表需要根据标题,问题和响应的行信息提交到单行。它们都与外键有关。

TABLES看起来像这样:

Headers
ID    TemplateID
0         9
1         8
2         7

Questions
------------------
ID   |  TemplateID
-------------------
0           9
1           9
2           8
3           8
4           8
5           7
6           7

-----------------
Response
-----------------
ID      HeaderID
0           0       
1           0
2           1
3           1
4           1
5           2
6           2

And I want my Query to return it like this
HeaderID    TemplateID      QuestionID1     ResponseID1     QuestionID2     ResponseID2     QuestionID3     ResponseID3
0               9               0               0               1               0               Null            Null
1               8               2               2               3               2               4               2
2               7               5               5               6               6               Null            Null

我是SQL的新手,并尝试了我知道的每一个加入,并且不知道这是否可行。我希望我发布的信息有助于解决我的问题。

感谢。

1 个答案:

答案 0 :(得分:0)

SELECT a.ID, a.TemplateID, b.ID, c.ID, b2.ID, c2.ID, b3.ID, c3.ID
FROM Headers a LEFT JOIN Questions b ON a.ID=b.ID LEFT JOIN 
Response C ON b.ID=C.ID LEFT JOIN Questions b2 ON b2.ID = c.ID 
LEFT JOIN Response c2 ON b2.ID = c2.ID 
LEFT JOIN Questions b3 ON c2.ID = b3.ID LEFT JOIN Response c3 ON b3.ID = c3.ID

我是如何解释你的问题的。只需做足够的左连接即可“捕获”最大ID。