Я пытаюсь написать оператор SELECT (JOIN) для двух таблиц. Первая - это таблица KPOL, вторая - SIFRAD, и я хочу отобразить всех сотрудников, которые выпускают политику в 2013 году. Когда я набираю такой запрос, ничего не происходит
SELECT P.SIFRA_RAD, S.IME, P.DAT_IZD
FROM AUTO.SIFRAD S, AUTO.KPOL P
WHERE S.IME = P.SIFRA_RAD AND EXTRACT(YEAR FROM P.DAT_IZD)= '2013'
Но когда я выбираю DAT_IZD, я получаю кучу данных
SELECT DAT_IZD
FROM AUTO.KPOL
WHERE EXTRACT(YEAR FROM DAT_IZD)='2013' ORDER BY DAT_IZD ASC
Я понятия не имею, где я делаю ошибку. Запрос выглядит нормально, но ничего не возвращает. Любое предложение и комментарий, где я допустил ошибку?
ОБНОВИТЬ
Я хочу показать, какая политика выпуска сотрудников в 2013 году. Первая таблица - это KPOL, которая содержит DAT_IZD (дата выпуска) Второй - AUTO.SIFRAD, который представляет собой таблицу сотрудников, содержащую SIFRA_R и IME. И SIFRA_R является ключом в таблице AUTO.KPOL, которая содержит SIFRA_RAD на картинке любимая вы можете увидеть все детали
"SIFRA_RAD" "IME" "DAT_IZD"
"00456" "Test" "1.3.2013"
"00465 "Test123" "1.3.2013"
"00469" "Test111" "1.3.2013"
@ Derviş Kayımbaşıoğlu Я обновил свой вопрос, вы можете проверить изображение выше для данных и примера :)
Пожалуйста, покажите образцы данных для обеих таблиц в табличной форме, а не в виде изображений.
К сожалению, данные, находящиеся здесь, содержат личную информацию пользователя и не могут быть здесь отображены. Адрес, имя, фамилия, номер телефона, номер кредитной карты:/
Пустой первый набор результатов указывает на то, что в таблице AUTO.SIFRAD
нет записи, которая соответствует какой-либо записи в таблице AUTO.KPOL
, которая также имеет дату DAT_IZD
в 2013 году. Вы можете смягчить эту проблему, перефразировав свой запрос как левое соединение и переместив логика WHERE
к предложению ON
:
SELECT P.SIFRA_RAD, S.IME, P.DAT_IZD
FROM AUTO.SIFRAD S
LEFT JOIN AUTO.KPOL P
ON S.IME = P.SIFRA_RAD AND EXTRACT(YEAR FROM P.DAT_IZD) = 2013;
Это по-прежнему не должно отображать данные для столбца DAT_IZD
, но по крайней мере вернет все записи из таблицы AUTO.SIFRAD
.
Нет, запрос работает, но ваш логика не работает. Добавьте пример данных к своему вопросу, чтобы показать нам, что вы хотите здесь сделать.
Я обновил свой вопрос. Надеюсь, теперь понятно, что я хочу сделать Отобразить, какая политика увольнения сотрудников в 2013 г. Таблица JOIN AUTO.KPOL и AUTO.SIFRAD AUTO.KPOL содержат SIFRA_RAD(EmployeeID) и DAT_IZD (Дата выпуска), а AUTO.SIFRAD содержит SIFRA_R(EmployeeID) и IME (имя)
не могли бы вы предоставить образцы данных? Вероятно, это из-за несовместимых типов данных при сравнении
S.IME = P.SIFRA_RAD