Получение всех записей - Внутреннее соединение - PullRequest
1 голос
/ 14 февраля 2009

Я немного новичок в базе данных, так что простите мою наивность здесь. У меня есть следующее заявление SQL:

SELECT DISTINCT  dbo.tb_user.familyName,
dbo.user_email.email FROM dbo.tb_user  
INNER JOIN dbo.user_email ON (dbo.tb_user.id = dbo.user_email.userID)

Возвращает записи, где существует адрес электронной почты.

То, что я хотел бы сделать, это получить все записи, чтобы я мог видеть, какие пользователи имеют и не имеют адреса электронной почты, записанные в БД.

Можно ли этого достичь?

Любые советы / помощь высоко ценится.

Ответы [ 3 ]

7 голосов
/ 14 февраля 2009

Вам нужно использовать левое внешнее соединение ..

SELECT DISTINCT  dbo.tb_user.familyName,dbo.user_email.email 
FROM dbo.tb_user  LEFT OUTER JOIN dbo.user_email 
ON (dbo.tb_user.id = dbo.user_email.userID)
3 голосов
/ 14 февраля 2009

то, что вы хотите, называется «внешним соединением». В порядке внешнего объединения таблицы перечислены вопросы, в отличие от внутреннего соединения, которое вы перечислили. Второй из перечисленных является внешним и будет показывать NULL в тех случаях, когда нет совпадений (по крайней мере, в MySQL, единственном месте, где я до сих пор использовал внешние объединения).

ВЫБЕРИТЕ DISTINCT dbo.tb_user.familyName, dbo.user_email.email ОТ dbo.tb_user ВЛЕВО НАРУЖНЫЙ ПРИСОЕДИНЯЙТЕСЬ к dbo.user_email ON (dbo.tb_user.id = dbo.user_email.userID)

0 голосов
/ 20 марта 2013

ПОПРОБУЙТЕ ЭТО РАБОТАЕТ ....

SELECT DISTINCT  tb_user.familyName,
                 user_email.email 
FROM tb_user  
LEFT  JOIN user_email 
ON  tb_user.id = user_email.userID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...