2010-12-02 116 views
0

我查询甲骨文内部查询

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的组合

请帮忙

回答

2

我重组查询,如下所示:

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

尝试使用select *找出重复的原因。

+0

jonearles 如何选择distint(prodid,prodts)的组合? – Aravind 2010-12-02 07:10:12

+0

@aravind您可以在选择之后立即添加单词“distinct”。不需要括号。 – 2010-12-02 07:15:58

0

使用不同过滤独特的组合... 例如.. 选择不同(A,B,C)从表 其中 一些条件

+0

不同的(a,b,c)会导致错误 – Aravind 2010-12-02 08:08:39