Sql выбрать нулевые и ненулевые значения в предложении WHERE - PullRequest
3 голосов
/ 27 июня 2010

Я пытаюсь выполнить запрос, который выбирает значения из таблицы, используя предложение WHERE, запрос возвращает только те строки, в которых есть значения всех условий, как я могу вернуть значения, которые также являются нулевыми?

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

Выполнение запроса, такого как

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

Запрос возвращает только одну строку для студента Майк. Я хотел бы вернуть всех студентов, даже если языковая настройка равна нулю.

Ответы [ 4 ]

4 голосов
/ 27 июня 2010

Вы хотите что-то вроде этого:

select
  student.id, student.student, language.language
from
  student left join language
      on student.languageid = language.languageid
3 голосов
/ 27 июня 2010

Не следует использовать синтаксис запятых для объединения таблиц.Используйте ISO-синтаксис JOIN или в этом случае LEFT OUTER JOIN (который почти во всех СУБД можно сократить до Left Join):

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

Это вернет всех студентов и их язык, если у них один илиноль, если у них его нет.

1 голос
/ 27 июня 2010

ГДЕ студент

1 голос
/ 27 июня 2010

Похоже, вам нужно внешнее соединение: http://en.wikipedia.org/wiki/Join_%28SQL%29#Outer_joins

...