Oracle внутренний запрос - PullRequest
       1

Oracle внутренний запрос

0 голосов
/ 02 декабря 2010

Мой запрос

select kc.prod_id, kc.prod_actv_ts 
from   kit_cmpnt kc ,kit_cmpnt_stock kcs, prod p
where kc.cmpnt_cd='016' 
and   kcs.kit_cmpnt_nbr= kc.kit_cmpnt_nbr 
and   kcs.stock_id=1 
and   kcs.prod_id=kc.prod_id 
and   kcs.prod_actv_ts=kc.prod_actv_ts 
and   p.prod_id= kc.prod_id 
and   p.prod_actv_ts= kc.prod_actv_ts 
and   p.prod_inactv_ts is null;

Я хочу получить отличную комбинацию kc.prod_id, kc.prod_actv_ts

как отдельный (kc.prod_id, kc.prod_actv_ts)

Но я получаю комбинацию повторных prod_id и prod_actv_ts

пожалуйста, помогите

Ответы [ 3 ]

2 голосов
/ 02 декабря 2010

Я бы реструктурировал запрос следующим образом:

select kc.prod_id, kc.prod_actv_ts 
from   kit_cmpnt kc 
where  kc.cmpnt_cd='016' 
and exists
       (select 1 from kit_cmpnt_stock kcs 
        where kcs.stock_id=1 
        and    kcs.kit_cmpnt_nbr= kc.kit_cmpnt_nbr 
        and   kcs.prod_id=kc.prod_id 
        and   kcs.prod_actv_ts=kc.prod_actv_ts)
 and exists
       (select 1 from prod p
        where   p.prod_id= kc.prod_id 
        and   p.prod_actv_ts= kc.prod_actv_ts 
        and   p.prod_inactv_ts is null);

Общий принцип заключается в том, что в предложении FROM не должно быть чего-либо, если вы что-то не берете из него.Если вы ничего не берете из него, это фильтр и должен быть в предложении WHERE как подзапрос.

0 голосов
/ 02 декабря 2010

использовать отчетливый для фильтрации уникальной комбинации ... например.. выберите отличные (a, b, c) из таблицы где некоторое состояние

0 голосов
/ 02 декабря 2010

Попробуйте использовать select *, чтобы найти причину дубликатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...