結果

2016-05-06 8 views
3

として、私は3つのテーブル持っているSQLクエリでNULL行き方:結果

  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 

私は取得しています"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を使用すると、すべての結合にこれを使用する必要があります(これは真ではありません)。すべて時間ですが、それは良い指針です)。 LEFT JOINは、ON条件が結果をフィルタリングする場合でも、最初のテーブルのすべての行を保持します。

WHERE句の2つの条件がON句に移動したことにも注意してください。これが必要です。そうしないと、WHEREは一致しない行を除外します。

+0

本当にありがとうございました。 – AKS