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
“from xiaoshou,caigou”应该要加
leftjoin 或者join之类的表间关联吧
加了Left join但数据还是比实际要大
xiaoshou caigou 的联系要在 join 中体现出来, 并且在on中加入条件 比如 把where 中的 ckzhuangtai = 1 放入 on 中
left join caigou on xiaoshou.bookid1 =caigou.bookid where xiaoshou.ckzhuangtai =1结果还是比实际要大,实际订单数量只有3,结果是9
把相关的表结构信息贴一下呗。不过你SQL确实有问题。楼上已经指出了
第一张表为采购表,第二张表为销售表
@Allen小飞: 采购表中的cgnumber是采购数量,销售表中的ysprice为销售价格,其中为了验证SQL语句,特地把ckzhuangtai只保留一个1(即已出库)
这样查出的数据肯定会有问题,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
在?号的地方把两张表的关联写上就行
left join caigou on xiaoshou.bookid1 =caigou.bookid where xiaoshou.ckzhuangtai =1结果还是比实际要大,实际订单数量只有3,结果是9
数据多,是不是有重复列,你用自然连接试试:
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
“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”
消息 156,级别 15,状态 1,第 1 行
关键字 'where' 附近有语法错误。
楼上的都说了,应该是用来关联的字段有重复数据。