2016-05-06 9 views
3

Ich habe drei Tabellen:Erste NULL in SQL-Abfrage als Ergebnis

  1. Lektion
  2. Betreff
  3. Frage

Meine Frage:

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 

Ich erhalte die Ergebnis null wegen "Question" Tabelle ist Null.

Aber ich möchte das Ergebnis trotz der "Question" Tabelle ist NULL.

Vielen Dank im Voraus.

Antwort

4

Sie erhalten kein "NULL" -Ergebnis. Sie erhalten einen leeren Ergebnissatz. NULL ist ein Wert innerhalb einer einzelnen Spalte.

Wenn dies der Fall ist, dann möchten Sie left join. Dies würde wie folgt aussehen:

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; 

Einige Kommentare.

Wenn Sie LEFT JOIN verwenden, sollten Sie es ziemlich gut für alle Joins verwenden (das ist nicht wahr alle die Zeit, aber es ist eine gute Anleitung). A LEFT JOIN behält alle Zeilen in der ersten Tabelle, auch wenn die ON Bedingungen die Ergebnisse filtern würden.

Beachten Sie auch, dass zwei der Bedingungen in der WHERE Klausel in ON Klauseln verschoben wurden. Dies wird benötigt - andernfalls würde WHERE nicht übereinstimmende Zeilen herausfiltern.

+0

Vielen Dank Ihre Führung ist wirklich notwendig. – AKS

Verwandte Themen