Я был бы очень признателен за помощь в следующем:Oracle SQL - лучший способ использовать IF NOT EXISTS?
SELECT A.EMPLOYEE, A.PHONE AS CELL, B.PHONE AS OFFICE, C.PHONE AS HOME
FROM PHONE_NUMBERS A, PHONE_NUMBERS B, PHONE_NUMBERS C
WHERE A.EMP_NUM = B.EMP_NUM
AND A.EMP_NUM = C.EMP_NUM
AND A.PHONE_TYPE = 'CELL'
AND B.PHONE_TYPE = 'OFFICE'
AND C.PHONE_TYPE = 'HOME'
Мой вопрос заключается в следующем: если работник имеет CELL и домашний телефон типов, но запись не существует для офисного типа телефона, запрос не вернется его, потому что ОФИСА не существует. Я попробовал операторы CASE, но без типа телефона CASE нечего сравнивать. Я прочитал много сообщений относительно IF NOT EXISTS, но я не уверен, что это правильный путь. Я хочу, чтобы запрос возвращал все EMP_NUM и null, если конкретный PHONE_TYPE не существует.
Не совсем то, что я искал, но дальше вдоль чем я. Я буду играть с ним и прокомментировать, когда у меня все будет сортировано. Спасибо. – glennsnoise
Если вы уже не понимаете, google на 'Full Join', чтобы понять, что это такое ... Если вы знаете, что такое внешнее объединение,' full Join' или 'Full Outer Join' является двунаправленным внешним соединением или join, который является «внешним» в обоих направлениях, а не только слева или справа. –
Теперь я читаю о них и примеряю некоторые примеры. Думаю, моя проблема заключается в том, что на моем столе это не значит, что поле пустое. Это то, что, если оно не заполнено, это поле не существует. Если у меня есть несколько экземпляров таблицы (A и B), каждый из которых занимает поле PHONE (A.PHONE и B.PHONE), и они различаются отдельным полем (PHONE_TYPE), как мне создать NULL для PHONE_TYPE, который делает не существует для сотрудника? Это не пусто, его нет. – glennsnoise