多表连接查询的问题??急!急! 在线等待(200分)

  • 主题发起人 主题发起人 Tiger_Dxj
  • 开始时间 开始时间
T

Tiger_Dxj

Unregistered / Unconfirmed
GUEST, unregistred user!
那位大哥看看这个查询有什么问题?为什么结果不对。
商品表
ID 供货商 鞋名 样式 鞋类 颜色 尺码 条码 售价 库存
0 耐克 跑鞋 女式 耐克运动鞋 红色 35码 0230010020102 ¥123.00 194
1 耐克 跑鞋 女式 耐克运动鞋 红色 35码 0220031020202 ¥123.00 165
2 耐克 跑鞋 女式 耐克运动鞋 红色 35码 022003102020222 ¥123.00 196
提货表
ID 分店名称 条码 日期 售价 数量
1 东山店 0230010020102 2002-2-11 ¥0.00 22
5 东山店 0230010020102 2002-2-11 ¥0.00 44
6 东山店 0230010020102 2002-2-11 ¥0.00 54
销售单
ID 条码 数量 日期 时间 顾客类型 卡号 开单人 收银员 收费方式 应收金额 实收金额 单号
26 0230010020102 1 2002-4-23 21:21:08 普通 李增 现金 ¥123.00 ¥123.00 1
27 0230010020102 1 2002-4-23 21:21:08 普通 李增 现金 ¥123.00 ¥123.00 2
查询:
SELECT [商品表].[条码], [商品表].[库存], Sum([销售单].[数量]) AS 销售量,
Sum([分店提货表].[数量]) AS 进货量 FROM 销售单 RIGHT JOIN (商品表 LEFT JOIN
分店提货表 ON [商品表].[条码]=[分店提货表].[条码]) ON
[销售单].[条码]=[商品表].[条码] GROUP BY [商品表].[条码],
[商品表].[库存], [销售单].[条码];

结果:
条码 库存 销售量 进货量
0220031020202 165
022003102020222 196
0230010020102 194 6 240
要取得的结果应该是销售量为2,进货量为120,现在结果不对啊。
 
你这是典型的笛卡儿乘积,分组前实际有六条记录,sum当然是6了!
 
select a.条码,a.库存,sum(c.销售数量),sum(b.进货量)
from 商品表 a
left join 销售单 b on a.条码=b.条码
left join 提货表 c on a.条码=c.条码
group by a.条码


 
To: ugvanxk
不行,提示语法错误(操作符丢失在left。。。)
 
什么库?
 
select d.条码,d.库存,d.进货量,sum(c.销售数量),
from
(select a.条码,a.库存,进货量=sum(b.进货量)
from 商品表 a
left join 销售单 b on a.条码=b.条码) d
left join 提货表 c on d.条码=c.条码
group by d.条码
 
这个问题我解决了,使用了AdOdataSet的计算字段,各位说改如何分配分啊??
 
多人接受答案了。
 

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
后退
顶部