INNER JOIN 多表聚合联查问题 select 表1.A,表2.B,(select sub(数量) from 表3 where Aid=表2.id group by Aid) from 表1 INNER JOIN 表2 on 表1.Bid=表2.id where 表1.Bid in(select Aid from 表3 having sub(数量)>0 group by Aid)
上面的语名如何把表3也INNER JOIN?
我试来试去都提示这个表1.A、表2.B没在group 中说。我的实际使用的语句这个表1中的字段跟表2中的字段都很多,总不可能都加入这个group中吧?而这个表3中,只有这一个数量需要用。 ------解决方案-------------------- 试试这个
select * from
(
select 表3.Aid,sum(表3.数量)as 数量 from 表1
INNER JOIN 表3 on 表3.Aid=表1.id
having sum(表3.数量)>0 group by 表3.Aid
) t
inner join 表1 on t.Aid=表1.Aid
inner join 表2 on 表1.Bid=表2.id
------解决方案--------------------
我上面写的,你试了吗:
select 表1.A,
表2.B,
sum_数量
from 表1
INNER JOIN 表2
on 表1.Bid=表2.id
inner join
(
select aid,sub(数量) sum_数量
from 表3
group by Aid
having sum(数量)>0
)t
on 表2.id = t.aid