Как исключить набор значений при использовании левого внешнего соединения?
Рассмотрим следующий запрос:
SELECT i.id,
i.location,
area.description
FROM incident_vw i,
area_vw area
WHERE i.area_code = area.code(+)
AND i.area_code NOT IN ('T20', 'V20B', 'V20O', 'V20P')
Запрос выполняется, но ни одно из значений кода области NULL не отображается.
BE AWARE : INCIDENT_VW.area_code
может иметь и имеет значения NULL.
Есть ли какие-либо идеи о том, как сопоставлять NULL коды зон инцидентов, исключая данный набор кодов регионов, без использования PL / SQL?
Обновление ANSI
Использование эквивалентного ANSI SQL также не работает:
SELECT i.id,
i.location,
area.description
FROM incident_vw i
LEFT JOIN area_vw area
ON area.code = i.area_code
WHERE i.area_code NOT IN ('T20', 'V20B', 'V20O', 'V20P')
Решение
Это работает:
SELECT i.id,
i.location,
area.description
FROM incident_vw i,
area_vw area
WHERE i.area_code = area.code(+)
AND (i.area_code NOT IN ('T20', 'V20B', 'V20O', 'V20P') and i.area_code IS NULL)
Спасибо всем!