SQLite LEFT JOIN & WHERE Путаница в предложении

У меня есть две таблицы:

Таблица 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, потому что у меня нет данных для него в таблице ответов.

5
задан Yaqub Ahmad 28 June 2012 в 03:33
поделиться