日期:2014-05-17  浏览次数:20516 次

一个简单的数据库查询问题。
a表:pillid(外键),num,
b表:pillid(主键),name,Factory,Mark,PillImage...

现在的问题是统计a表的num并显示pillid的所有信息(b表);

模拟SQL语句是:
select sum(a.num),b.* 
from a left join b on a.pillid=b.pillid 
group by a.pillid
但是这个group by连接查询肯定报错,只是为了说明逻辑。求助。

------解决方案--------------------
select sum(a.num),b.*
from a left join b on a.pillid=b.pillid
group by (B的字段)
------解决方案--------------------
逻辑:先统计a表的num,再关联b表的相关字段。
select aa.pillid,aa.num,b.*
from(
select pillid,sum(num) num
from a
group by pillid
)aa
left join b on aa.pillid=b.pillid 

------解决方案--------------------
SQL code

select sum(a.num),b.*  
from a left join b on a.pillid=b.pillid  
group by b表所有字段

-->这是group by 的规则,你可以把a.pillid放在第一位

------解决方案--------------------
select 语句的顺序是先group by 再select的,所以在select中,非sum/avg/max/min/count的条件,都要首先出现在group by中。