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