PHP SQL: сопоставление соответствующих данных между двумя таблицами без фильтрации данных в первой таблице - PullRequest
0 голосов
/ 20 мая 2010

У меня есть 2 таблицы. Ради простоты у 'u' есть следующие столбцы
Идентификатор_пользователя
divisionid

'd' имеет следующее:
divisionid
имя

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

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

"ВЫБЕРИТЕ ИДЕНТИФИКАТОР, d.NAME
ОТ тебя,
ГДЕ u.divisionid = d.divisionid
ЗАКАЗАТЬ ПО ИДЕНТИФИКАЦИИ "

Ответы [ 2 ]

1 голос
/ 20 мая 2010

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

SELECT userid, d.NAME
FROM u
LEFT OUTER JOIN division d
ON u.divisionid = d.divisionid
ORDER BY userid
0 голосов
/ 20 мая 2010

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

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

A LEFT OUTER JOIN сохраняет все строки в первой таблице, независимо от наличия совпадающих строк во второй таблице.

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