1
ybh37 2014-05-06 11:11:36 +08:00
你确定这样写没sql语法错误?
|
2
lichao 2014-05-06 11:26:59 +08:00
select 后面的内容,要么是聚合函数,要么是字段(字段必须出现在 group by 子句中),你 select * 是什么用意?
|
3
qdvictory 2014-05-06 11:36:26 +08:00
1. 写法问题,既然main是索引表,那么为什么不把main写在写面,这样反着写好蛋疼。
2. container既然与bill是一对多的关系,那么你group by的时候就要在Select *中处理好显示的是哪一条,比如你的sql执行出来是3条,那么按你出错时出来的sql肯定是>3条的,因此你的group by将多条sql合并成了一条,而结果为先出现的那一条,即你的错误答案。解决方法同2楼。 |
4
qdvictory 2014-05-06 11:38:50 +08:00
@qdvictory 不能编辑好麻烦。。。少打了点东西
你的sql执行出来是3条,那么按你出错时去掉group by出来的记录肯定是>3条的,因此你的group by将多条记录合并成了一条 |
5
Mac OP @qdvictory
select main.ntno,container.c_no,bill.shipper,sum(bill.count_ctn),sum(bill.count_kgs),sum(bill.count_cbm) from bill left join container on bill.cid = container.cid left join main on container.ntno = main.ntno where main.ntno='140242' group by bill.shipper 写全点吧,本来select *是想简化题目的,现在写全。目的是让所有bill.shipper相同的数据合并输出件数毛重体积。但实际效果,shipper如果在两个cid中,他就不合并了,列出了两条记录。 |