2016-05-06 4 views
3

У меня есть три таблицы:Получение NULL в SQL запросе как результат

  1. Урок
  2. Тема
  3. Вопрос

Мой запрос:

SELECT  
    LE.LessonId, LE.LessonName, 
    SUB.SubjectName, 
    QU.QuestionId, QU.QuestionName 
FROM 
    Lesson LE 
INNER JOIN 
    Subject SUB ON SUB.LessonId = LE.LessonId 
INNER JOIN 
    Question QU ON QU.LessonId = LE.LessonId 
WHERE 
    LE.LessonPageId = 1552 
    AND SUB.IsActive = 1 
    AND QU.IsActive = 1 

я набираюсь null результат по причине "Question" таблица нулевой.

Но я хочу получить результат, несмотря на то, что таблица "Question" NULL.

Заранее спасибо.

ответ

4

Вы не получите результат «NULL». Вы получаете пустой набор. NULL - значение в пределах одного столбца.

Если это так, то вы хотите left join. Это будет выглядеть так:

SELECT LE.LessonId, LE.LessonName, SUB.SubjectName, 
     QU.QuestionId, QU.QuestionName 
FROM Lesson LE LEFT JOIN 
    Subject SUB 
    ON SUB.LessonId = LE.LessonId AND SUB.IsActive = 1 LEFT JOIN 
    Question QU 
    ON QU.LessonId = LE.LessonId AND QU.IsActive = 1 
WHERE LE.LessonPageId = 1552; 

Некоторые комментарии.

Когда вы используете LEFT JOIN, вы в значительной степени должны использовать его для всех соединений (это не так) все время, но это хорошее руководство). A LEFT JOIN сохраняет все строки в первой таблице, даже если условия ON будут фильтровать результаты.

Также обратите внимание, что два условия в предложении WHERE были перенесены в пункты ON. Это необходимо - иначе WHERE будет отфильтровывать несоответствующие строки.

+0

Большое вам ваше руководство действительно необходимо. – AKS

Смежные вопросы