2017-02-03 2 views
1

У меня есть две таблицы:SQL запросов: Необходимо решить ниже логики запроса

enter image description here

Я хочу вывести, как показано ниже логики:

Если я ввести любой classcode, то мне нужно все вопросы, которые связанный с этим кодом класса. Я также хочу задать вопрос, который является вопросом ребенка на этот вопрос.

Возможно также, что один классный код соответствует нескольким вопросам. Вы можете видеть этот классный код 65005. В этом случае мы рассматриваем вопрос с верхним родителем.

Если я передам 42908, то мой выход, как:

enter image description here

Позвольте мне знать, если у вас есть какие-либо запрос.

SELECT * FROM QuestionMaster as a INNER JOIN [ClassCodeQuestionMapping] as b ON a.QuestionId = b.QuestionId 
    WHERE b.ClassCode=42908 

Я пробовал выполнить запрос, но я не могу получить его дочерний вопрос.

Спасибо.

+1

Что вы пытались еще? –

+0

@Amit Bisht, я новичок в SQL. Так что я понятия не имею, как получить этот вывод. –

+0

Начните с малого, как бы вы выбрали идентификаторы вопросов для заданного класса кода? Тогда мы можем подумать о том, чтобы вытащить вопросы, соответствующие идентификаторам вопроса. – Matt

ответ

0

Positing наихудшего ответ, но не имеют редактора SQL для тестирования или написать запрос, будет чувствовать себя счастливым, если кто-то downvote это, но это может дать некоторую подсказку о логике

Select c.Question From (SELECT a.Question, a.ParentQuestionId 
FROM QuestoinTable as a 
INNER JOIN QuestoinClassMappingTable as b 
ON a.QuestionId = b.QuestionId 
where b.ClassCode = 1234) as c 
INNER JOIN QuestoinTable as d 
ON c.ParentQuestionId= d.QuestionId 
UNION 
Select d.Question From (SELECT a.Question, a.ParentQuestionId 
FROM QuestoinTable as a 
INNER JOIN QuestoinClassMappingTable as b 
ON a.QuestionId = b.QuestionId 
where b.ClassCode = 1234) as c 
INNER JOIN QuestoinTable as d 
ON c.ParentQuestionId= d.QuestionId