У меня есть две таблицы:
Таблица 1: Вопросы:
QuestionId NUMERIC
Title TEXT
Тестовые данные в таблице вопросов:
QuestionId Title
1 What is your name?
2 What is your age?
Таблица 2: Ответы:
AnswerId NUMERIC
PersonId NUMERIC
QuestionId NUMERIC
Answer TEXT
Если есть НЕТ ДАННЫХ в таблице ответов , затем ниже запрос возвращает правильные результаты (2 строки) :
SELECT q.QuestionId, q.Title, a.Answer
FROM Questions q
LEFT OUTER JOIN Answers a ON q.QuestionId = a.QuestionId
WHERE a.PersonId = 2 OR a.PersonId IS null
Но если у меня есть, например, 1 запись в таблице ответов, например :
AnswerId 1
PersonId 1
QuestionId 1
Answer 'My Name is Yaqub'
Ниже запрос работает нормально:
SELECT q.QuestionId, q.Title, a.Answer
FROM Questions q
LEFT OUTER JOIN Answers a ON q.QuestionId = a.QuestionId
WHERE a.PersonId = 1 OR a.PersonId IS null
Но этот запрос возвращает только одну строку:
SELECT q.QuestionId, q.Title, a.Answer
FROM Questions q
LEFT OUTER JOIN Answers a ON q.QuestionId = a.QuestionId
WHERE a.PersonId = 2 OR a.PersonId IS null
Приведенный выше запрос возвращает только одну строку, которая неверна, потому что у меня есть два вопроса в таблице вопросов, и приведенный выше запрос должен вернуть их оба из-за условия ' ИЛИ a.PersonId IS null».
Почему не возвращаются две строки?
Желаемые результаты:
Я хочу получить все вопросы (2 строки) и те ответы, где PersonId имеет некоторое значение, например, ДВЕ строки для человека 2, потому что у меня нет данных для него в таблице ответов.