PHP SQL: Соответствие соответствующих данных между 2 таблицами, без фильтрации данных в 1-й таблице

StackOverflow https://stackoverflow.com/questions/2875835

  •  03-10-2019
  •  | 
  •  

Вопрос

У меня есть 2 стола. Для простоты Сайка «u» имеет следующие столбцы
ID пользователя
дивизионный

«D» имеет следующее:
дивизионный
имя

Я не создал эту таблицу, иначе у меня не было бы этой проблемы. u.division. могу быть нулевым. d.division. не можем.

Запуск следующего создает соответствующие данные, но он также фильтрует каждый USERID, который имеет NULL для его DivisionID. Есть ли в любом случае, чтобы по-прежнему показать все UserId, независимо от их DivisionId, и если DivisionID не является нулевым, чтобы показать название разделения?

«Выберите UserID, D.name
От тебя, д
Где u.divisionId = d.divisionId
Заказ по UserID "

Это было полезно?

Решение

Используйте внешнее соединение:

SELECT userid, d.NAME
FROM u
LEFT OUTER JOIN division d
ON u.divisionid = d.divisionid
ORDER BY userid

Другие советы

Использование Oracle или подразумеваемого синтаксиса присоединения подразумевает INNER JOIN. Отказ Внутреннее соединение устраняет записи, которые не соответствуют критериям.

Явное соединение с использованием JOIN Пуск позволяет указать тип присоединения.

А. LEFT OUTER JOIN Сохраняет все строки в первом столе, независимо от того, есть ли подходящие строки во второй таблице.

SELECT userid, d.NAME
FROM u
LEFT OUTER JOIN division d
ON d.divisionid = u.divisionid
ORDER BY userid
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top