SELECT данные из двух таблиц получают NULL

Я пытаюсь написать оператор 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"

не могли бы вы предоставить образцы данных? Вероятно, это из-за несовместимых типов данных при сравнении S.IME = P.SIFRA_RAD

Derviş Kayımbaşıoğlu 30.05.2019 12:21

@ Derviş Kayımbaşıoğlu Я обновил свой вопрос, вы можете проверить изображение выше для данных и примера :)

user11431955 30.05.2019 13:05

Пожалуйста, покажите образцы данных для обеих таблиц в табличной форме, а не в виде изображений.

Tim Biegeleisen 30.05.2019 13:20

К сожалению, данные, находящиеся здесь, содержат личную информацию пользователя и не могут быть здесь отображены. Адрес, имя, фамилия, номер телефона, номер кредитной карты:/

user11431955 30.05.2019 13:24
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пустой первый набор результатов указывает на то, что в таблице 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.

Нет, запрос работает, но ваш логика не работает. Добавьте пример данных к своему вопросу, чтобы показать нам, что вы хотите здесь сделать.

Tim Biegeleisen 30.05.2019 12:26

Я обновил свой вопрос. Надеюсь, теперь понятно, что я хочу сделать Отобразить, какая политика увольнения сотрудников в 2013 г. Таблица JOIN AUTO.KPOL и AUTO.SIFRAD AUTO.KPOL содержат SIFRA_RAD(EmployeeID) и DAT_IZD (Дата выпуска), а AUTO.SIFRAD содержит SIFRA_R(EmployeeID) и IME (имя)

user11431955 30.05.2019 12:47

Другие вопросы по теме