2010-06-27 5 views
3

J'essaie d'exécuter une requête qui sélectionne les valeurs d'une table à l'aide d'une clause WHERE, la requête ne renvoie que les lignes où toutes les conditions ont des valeurs, hoe je vais renvoyer les valeurs qui sont également nulles?Sql sélectionnez les valeurs null et non nulles dans la clause WHERE

 Language Table       Students Table 
ID Language      ID  Student  LanguageID 
    1  English       1  Joe 
    2  Spanish       2  Mike   1 

Exécution d'une requête telle que

Select student.ID , Student.Student , Language.language 
FROM 
    Students, Language 
WHERE 
    student.LanguageID = Language.id 

La requête ne renvoie qu'une seule ligne pour mike étudiant, je voudrais revenir tous les étudiants, même si le paramètre de langue est nulle.

Répondre

4

Vous voulez quelque chose comme ceci:

select 
    student.id, student.student, language.language 
from 
    student left join language 
     on student.languageid = language.languageid 
1

OÙ student.LanguageID = Language.id OU student.LanguageID IS NULL

3

Vous devriez n'utilisez pas la syntaxe de virgule pour joindre des tables. Utilisez la syntaxe ISO JOIN ou dans ce cas LEFT OUTER JOIN (qui, dans à peu près tous les SGBD peuvent être raccourcies à gauche join):

Select Student.Id, Student.Student. Language.Language 
From Students 
    Left Join Language 
     On Language.Id = Student.LanguageId 

Cela renverra tous les élèves et leur langue si elles ont un ou nul si ils n'en ont pas.