2017-02-01 2 views
0

У меня есть 3 таблицы, которые мне нужно записать в одну строку за строкой, основанную на заголовках, вопросах, ответах. Все они связаны с иностранными ключами.много-один запрос sql

Таблицы выглядит следующим образом:

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, и пытался каждый присоединиться, что я знаю, и не знаю, если это возможно или нет. Я надеюсь, что информация, которую я разместил, помогает в решении моей проблемы.

Спасибо.

+4

Поиск по оси. Кроме того, вы должны обращаться с этим в своем коде приложения. – GurV

+0

, пожалуйста, взгляните на [how-to-ask] (http://stackoverflow.com/help/how-to-ask) – swe

+0

Вопрос содержит все данные, но что вы пробовали? если вы не знаете, обратитесь к документации. [здесь приведен пример] (https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved= 0ahUKEwj-hveZ8-7RAhWKpI8KHfz5B6EQFggaMAA & URL = HTTP% 3A% 2F% 2Fwww.w3schools.com% 2Fsql% 2Fsql_join.asp & USG = AFQjCNFZqxeBfoVWkdNQwzQdaJxwbVJwuQ & BVM = bv.145822982, d.c2I) –

ответ

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.s