Sign-up....

关于表之间数据查询的问题,急!!!!

A表------>B表-------->C表

要求:通过A.P查找B.P ---> 再通过B.K查找C.K ---->按B.k等于C.K查找出所有记录总对所有NUM进行汇总

A表结构B表结构C表结构

__________ __________ _____________

|__NO_|__P_||__P_|__K_| |_K__|__NUM__|

|_____|____| |____|____| |_____|______|

像这样以A表的一个字段去查询B表的一个字段再以B表所查出的记录中的某个字段值

去查询C表的中的记录,并对查出的所有记录的某列进行汇总.这样的查询语句该怎么写

如何写效率才高???

[385 byte] By [1234567] at [2007-8-15 11:13:45]
# 1 Re: 关于表之间数据查询的问题,急!!!!
上面的显示有点乱了再说明一下

假设:A表有NO,P两个字段 B表有P,K两个字段 C表有K,NUM两个字段

浮云 at 2007-4-9 23:37:29 >
# 2 Re: 关于表之间数据查询的问题,急!!!!
有点迷糊

select sum(c.num) from a,b,c

where a.p=b.p

and b.k=c.k

对不

# 3 Re: 关于表之间数据查询的问题,急!!!!
不对吧,因为select * from a,b where a.p=b.p 查询的结果

有可能为多条记录

并且A表中的记录我全部要.

我A表中的记录都要显示,而通过a.p=b.p and b.k=c.k没找到

c.num时,c.num的值显示为0

比如按这安成生成一个新表为

a.p c.num

S 5

V 0

唉,不能发图片这里说的不是很清楚

笨老鼠 at 2007-4-9 23:37:43 >
# 4 Re: 关于表之间数据查询的问题,急!!!!
试一下

select d.p,nvl(c.num,0) from c,(select a.p,b.k from a,b where a.p(+)=b.p) d where d.k(+)=c.k

Canty at 2007-4-9 23:37:49 >
# 5 Re: 关于表之间数据查询的问题,急!!!!
select sum(c.num) from a inner join on(a.p=b.p) inner join on(b.k=c.k );

+好像不太常用了

Oracle

All Classified