Я пытаюсь на основе Oracle 12c выбрать записи из таблицы DETAIL, которые должны удовлетворять двум ограничениям where:
- внешний ключ находится во вспомогательном выборе
- column равно нулю
Следующий оператор с подвыбором (в предложении) не возвращает результатов вообще.
select *
from DETAIL
where (PARENT_ID) in (
select ID from MASTER where COL1 = 1)
and COL2 is null;
А также левое соединение не возвращает результатов:
select d.*
from MASTER m
left join DETAIL d
on d.PARENT_ID = m.ID
where m.COL1 = 1
and d.COL2 is null;
В настройках моей таблицы содержатся следующие таблицы:
create table MASTER (
ID NUMBER(19) NOT NULL,
COL1 NUMBER(19),
primary key (ID)
);
insert into MASTER ("ID", "COL1") VALUES (1, 1);
insert into MASTER ("ID", "COL1") VALUES (2, 2);
insert into MASTER ("ID", "COL1") VALUES (3, 1);
create table DETAIL (
ID NUMBER(19) NOT NULL,
PARENT_ID NUMBER(19),
COL2 NUMBER(2,0),
primary key (ID),
foreign key (PARENT_ID) references MASTER(ID)
);
insert into DETAIL ("ID", "PARENT_ID", "COL2") VALUES (1, 1, 1);
insert into DETAIL ("ID", "PARENT_ID", "COL2") VALUES (2, 2, 1);
insert into DETAIL ("ID", "PARENT_ID", "COL2") VALUES (3, 3, 1);
insert into DETAIL ("ID", "PARENT_ID", "COL2") VALUES (4, 3, 2);
В результате я получу более 0 записей на основе приведенного выше кода.
Любые рекомендации?Спасибо!