首页 新闻 会员 周边

SQL表连接查询问题

0
悬赏园豆:20 [已关闭问题] 关闭于 2012-12-16 22:05

select bookid1 书籍编号 ,sum(ddnumber1)as 订单数量,avg(sumprice/ddnumber1) 平均售价,sum(cgjiage*cgnumber) 总成本, SUM(ddnumber1 *ysprice1)as 销售总额 from xiaoshou,caigou where ckzhuangtai =1 and xiaoshou.writername ='小张'  group by bookid1
order by 书籍编号 desc

得出的数据中“订单数量”不符合表的数据(得出的数比表总数大),何解?在线等回答,23:30分断网,QQ解答也可:11154801274

Allen小飞的主页 Allen小飞 | 初学一级 | 园豆:62
提问于:2012-12-13 23:15
< >
分享
所有回答(6)
0

“from xiaoshou,caigou”应该要加

leftjoin 或者join之类的表间关联吧

Invictus | 园豆:76 (初学一级) | 2012-12-13 23:26

加了Left join但数据还是比实际要大

支持(0) 反对(0) Allen小飞 | 园豆:62 (初学一级) | 2012-12-13 23:27
0

xiaoshou caigou 的联系要在 join 中体现出来, 并且在on中加入条件 比如 把where 中的 ckzhuangtai = 1 放入 on 中

gunsmoke | 园豆:3592 (老鸟四级) | 2012-12-14 04:38

left join caigou on xiaoshou.bookid1 =caigou.bookid where  xiaoshou.ckzhuangtai =1结果还是比实际要大,实际订单数量只有3,结果是9

支持(0) 反对(0) Allen小飞 | 园豆:62 (初学一级) | 2012-12-14 13:04
0

把相关的表结构信息贴一下呗。不过你SQL确实有问题。楼上已经指出了

jone_e | 园豆:1410 (小虾三级) | 2012-12-14 09:22

 

第一张表为采购表,第二张表为销售表

支持(0) 反对(0) Allen小飞 | 园豆:62 (初学一级) | 2012-12-14 13:18

@Allen小飞: 采购表中的cgnumber是采购数量,销售表中的ysprice为销售价格,其中为了验证SQL语句,特地把ckzhuangtai只保留一个1(即已出库)

支持(0) 反对(0) Allen小飞 | 园豆:62 (初学一级) | 2012-12-14 13:23
0

这样查出的数据肯定会有问题,from xiaoshou,caigou求出的是两张表数量的成绩,有很多重复的数据,当然会变大

select bookid1 书籍编号 ,sum(ddnumber1)as 订单数量,avg(sumprice/ddnumber1) 平均售价,sum(cgjiage*cgnumber) 总成本, SUM(ddnumber1 *ysprice1)as 销售总额 from xiaoshou leftjoin caigou on ?where ckzhuangtai =1 and xiaoshou.writername ='小张'  group by bookid1 
order by 书籍编号 desc

在?号的地方把两张表的关联写上就行

小何人家 | 园豆:329 (菜鸟二级) | 2012-12-14 09:41

left join caigou on xiaoshou.bookid1 =caigou.bookid where  xiaoshou.ckzhuangtai =1结果还是比实际要大,实际订单数量只有3,结果是9

支持(0) 反对(0) Allen小飞 | 园豆:62 (初学一级) | 2012-12-14 13:03
0

数据多,是不是有重复列,你用自然连接试试:

select bookid1 书籍编号 ,sum(ddnumber1) as 订单数量,avg(sumprice/ddnumber1) 平均售价,sum(cgjiage*cgnumber) 总成本, SUM(ddnumber1 *ysprice1) as 销售总额 from xiaoshou natural join  caigou where ckzhuangtai =1 and xiaoshou.writername ='小张'  group by bookid1
order by 书籍编号 desc

伏草惟存 | 园豆:1420 (小虾三级) | 2012-12-14 10:44

“select bookid1 书籍编号,sum(ddnumber1)as 订单数量,avg(sumprice/ddnumber1) 平均售价,sum(cgjiage*cgnumber) 总成本,SUM(sumprice)as 销售总额 from xiaoshou  natural join caigou  where  xiaoshou.writername ='小张' and xiaoshou.ckzhuangtai=1 group by bookid1”

支持(0) 反对(0) Allen小飞 | 园豆:62 (初学一级) | 2012-12-14 13:11

消息 156,级别 15,状态 1,第 1 行
关键字 'where' 附近有语法错误。

支持(0) 反对(0) Allen小飞 | 园豆:62 (初学一级) | 2012-12-14 13:25
0

楼上的都说了,应该是用来关联的字段有重复数据。

johnMing | 园豆:223 (菜鸟二级) | 2012-12-14 11:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册