hur.cn - 华软网

 热门搜索

我用了一天也没有用一条语句写出这个关联的查询?超难!!在线等!!

  作者:未知    来源:网络    更新时间:2018/4/16
三个表分别为合签表a 关联表b 化验表c
合签表a        关联表b           化验表c
cu_no         su_no cu_no        cu_no   loss
H001          a1     H001        H007     0.5
H002          a2     H001        H008     0.9
              a3     H001        H009     0.7
              a4     H002        H010     0.4
              a1     H007        
              a2     H008
              a3     H009
              a4     H010
我想得到如下结果:
当合签表a.cu_no=h001时候 化验表c的loss求和(0.5+0.9+0.7)
用一条语句如何写??谢谢
------华软网友回答------
select sum(loss) from c where cu_no in (select cu_no from b where su_no in (select su_no from b where cu_no ='H001'))
------华软网友回复------
不用in ,我想用exists或者多表关联的形式
我不想用这种嵌套子查询

------华软网友回复------
select sum(loss) from c,(select cu_no from b,(select su_no from b,a where a.cu_no=b.cu_no and a.cu_no='H001') as x1 where b.su_no=x1.su_no) as x2 where c.cu_no=x2.cu_no
------华软网友回复------
用相关子查询怎么写?
------华软网友回复------
select sum(loss) from c where exists (select * from b where b.cu_no=c.cu_no and exists (select * from b as b1 where cu_no='H001' and b.su_no=b1.su_no))
------华软网友回复------
后两句不对出现
(0010):error  c0195:ORA-00907:缺少右括号
------华软网友回复------
这三个语句都在数据库中试过了,都好使,不报错。
------华软网友回复------
select sum(loss) from c
where exists (select * from b,a
 where a.cu_no='H001' and a.cu_no=b.cu_no and c.cu_no=b.cu_no);
也不对
------华软网友回复------
在oracle的sql_plus 中调试不对啊
------华软网友回复------
友情UP
------华软网友回复------
如果要指定某一个cu_no,如'h001'
select sum(c.loss) from C,
( select cu_no from B where su_no in (select su_no from B where cu_no = 'h001') ) B 
where C.cu_no = B.cu_no   

如果要列出所有cu_no
select sum(c.loss),abb.cu_no from c,
(
select ab.cu_no,b.cu_no as cu_no2 from
(select a.cu_no,b.su_no from a,b
where a.cu_no = b.cu_no  ) ab,b where ab.su_no = b.su_no
)abb
where C.cu_no = abb.cu_no2 group by abb.cu_no
------华软网友回复------
select sum(c.loss) from a,b,c,(select * from b) b1 
where a.cu_no='H002' and a.cu_no=b.cu_no and b.su_no=b1.su_no and b1.cu_no=c.cu_no ;
这样可以

------华软网友回复------
select sum(loss) from c
where exists (select 1 from b,a,(select * from b)b1
 where a.cu_no='H002' and a.cu_no=b.cu_no and b.su_no=b1.su_no and b1.cu_no=c.cu_no );
也对
------华软网友回复------
select sum(loss) from c,(select cu_no from b,(select su_no from b,a where a.cu_no=b.cu_no and a.cu_no='H001') as x1 where b.su_no=x1.su_no) as x2 where c.cu_no=x2.cu_no
 我把as去了就可以了      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。