SQL语句问题(50分)

  • 主题发起人 主题发起人 hnzqw
  • 开始时间 开始时间
H

hnzqw

Unregistered / Unconfirmed
GUEST, unregistred user!
现有3个表,

布货:布货ID,布货日期,客户
布货明细:布货明细ID,布货ID,产品,数量,单价,金额
回款:回款ID,回款日期,客户,产品,回款数量,回款金额

如何在TADOQUERY中写SQL语句,才能作到如下的子集:
客户 布货总数量 布货总金额 回款总数量 回款总金额



 
select a.客户,sum(B.数量) as 布货总数量,SUM(B.金额) as 布货总金额,SUM(C.回款) as 回款总数量,SUM(C.回款金额) as 回款总金额 from 布货 a,布货明细 b,回款 c where a.布货ID=B.布货ID and a.客户=c.客户 group by a.客户;
行吗?
 
可以给zhangkan分了
 
在ADOQUERY中 不行呵
 
select 布货.客户,SUM(布货明细.数量) AS 布货总数量,SUM(布货.金额) AS 布货总金额,SUM(回款.回款数量) AS 回款总数量,SUM(回款.回款金额) AS 回款总金额
from 布货,布货明细,回款
where 布货.客户=回款.客户 and 布货.布货ID=布货明细.布货ID

那你试试我的吧
 
这样得处的结果不正确。
我这三个表是ACCESS表,在ACCESS中把布货和布货明细的查询结果再与回款进行左查询才得到
正确结果,可在DELPHI中SQL的嵌套查询如何写
 
试一试这个:
select a.客户,sum(B.数量) as 布货总数量,SUM(B.金额) as 布货总金额,
SUM(C.回款) as 回款总数量,SUM(C.回款金额) as 回款总金额
from 布货 a left join 布货明细 b on a.布货ID=b.布货ID
left join 回款 c on a.客户=c.客户 group by a.客户;
 
应当给分westboy2000
这其实是一个很简单的查询啊
 
westboy2000:
提示:
(操作符丢失)在查询表达式'a.布货ID=b.布货ID left join 回款 c on a.客户=c.客户'中
为何?
两个LEFT JOIN 之间用空格分开吗,为何出错?
问题在那里?
 
select a.客户,sum(B.数量) 布货总数量,SUM(B.金额) 布货总金额,
SUM(C.回款) 回款总数量,SUM(C.回款金额) 回款总金额
from 布货 a left join 布货明细 b on a.布货ID=b.布货ID
left join 回款 c on a.客户=c.客户 group by a.客户;

应该没问题,注意加空格
 
有错吗?应该可以啊。
 
试了多次,还是不行,总提示 LEFT JOIN 表达式出错,我可是照作了,也检查了多次,看提示像是把两个ON之间的东西看作是一个
表达式: 'on a.布货ID=b.布货ID left join 回款 c on' 出错???
这两个LEFT JOIN 好像SQL不认识.
我的是ACCESS数据库,与这个没关系吧,

另外我试用UNION来作 :
select a.客户,sum(B.数量) as 布货总数量,NULL
from 布货 a left join 布货明细 b on a.布货ID=b.布货ID
UNION
select NULL,NULL,SUM(C.回款) as 回款总数量
from 回款
group by 回款.客户;

结果如下:
客户 布货数量 回款数量
王二 20
王二 20

这种结果是正确的,但却成了二行数据,如何改正UNION 才能使上面二行显示成一行.
 
select 客户,sum(布货总数量) 布货总数量,sum(回款数量) 回款数量
from
(select a.客户,sum(B.数量) as 布货总数量,NULL
from 布货 a left join 布货明细 b on a.布货ID=b.布货ID
UNION
select NULL,NULL,SUM(C.回款) as 回款总数量
from 回款
group by 回款.客户;
) as a group by 客户
 
如果要使用union,那么你可以试一试下面这个,这回应该差不多了:[:)]

select 客户,sum(数量) as 布货总数量,SUM(金额) as 布货总金额,
SUM(回款数量) as 回款总数量,SUM(回款金额) as 回款总金额 from
(select a.客户,B.数量,B.金额,null as 回款数量,NULL as 回款金额
from 布货 a left join 布货明细 b on a.布货ID=b.布货ID
UNION all
select 客户,NULL as 数量,NULL as 金额,回款数量,回款金额 from 回款
) as Tmp group by 客户;
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部