Har stött på patrull!
Fakta:
Två tabeller: Frågor och svar.
En fråga har x antal svar.
Ett svar kan ha följdfråga som i sin tur har x antal svar.
Jag tänkte att en CTE skulle passa för ändamålet men kommer inte på hur det skulle kunna se ut.
Har kommit så här långt:
WITH CTE_Questions
AS
(
SELECT q.QuestionId, q.ParentId, q.Question, a.AnswerId, a.Answer
FROM Booking_Scenarios_QuestionsTmp q
INNER JOIN Booking_Scenarios_AnswersTmp a ON q.QuestionId = a.QuestionId
WHERE q.ParentId IS NULL
UNION ALL
SELECT q.QuestionId, q.ParentId, q.Question, a.AnswerId, a.Answer
FROM Booking_Scenarios_QuestionsTmp q
INNER JOIN Booking_Scenarios_AnswersTmp a ON q.QuestionId = a.QuestionId
INNER JOIN CTE_Questions cte ON a.AnswerId = cte.ParentId
)
SELECT * FROM CTE_Questions
De kolumner som är intressanta är QuestionId, ParentId samt AnswerId.
q.ParentId relaterar till a.AnswerId, dvs. om ParentId inte är null så är det en följfråga till ett svar.
Koden ovan listar nu bara frågor och svar där ParentId är null, dvs. huvudfrågor. Inga följdfrågor listas.
Mao. all kod under UNION ALL körs ej då ParentId i koden ovan alltid är null!
Jag fyller väl på med info till nån vänlig själ kommer med en lösning! :)
Jag har nu ritat om databasen lite, flyttat Parentid från Questiontabell till Answertabellen istället.
Jag tror att det är mer logiskt (men ej säker), så här ser databasen ut nu och svaret jag vill få ut.
Så det är alltså en skön selectsats jag behöver (troligtvis en cte)!