求一个sql语句写法?
A表 字段为 ID,Name,Quantity,CategoryID(可空),DID
B表 字段为 ID,Name,Quantity,CategoryID(可空)
C表 字段为 CategoryID,CategoryName
D表 字段为 DID,DName(可重复)
如果categoryid不为代的情况下,我的表达式为
select d.dname,c.categoryname ,sum(a.quantity)as Q1 ,sum(b.quantity) as Q2 from a inner join d on d.did=a.did left join c on c.categoryid=a.categoryid full join
b on (b.id=a.id and a.categoryid=c.categoryid) where group by d.dname,c.categoryname
上面实际上是错误 的,我至所以写这个式子,让你看出我想查询的结果,正确怎么写??
------解决方案--------------------
select d.dname,
c.categoryname ,
sum(a.quantity) as Q1 ,
sum(b.quantity) as Q2
from a inner join d on d.did = a.did
left join c on c.categoryid = a.categoryid
full join b on b.id = a.id
where group by d.dname,
c.categoryname
------解决方案--------------------
实际上是对a,b两个表分别统计,所以可用union,如下:
select d.dname,c.categoryname ,sum(a.quantity)as Q1,'' as Q2 from a
inner join d on d.did=a.did
left join c on a.categoryid=c.categoryid
group by d.dname,c.categoryname
union
select d.dname,c.categoryname ,'',sum(b.quantity)as Q2 from b
inner join d on d.did=b.did
left join c on b.categoryid=c.categoryid
group by d.dname,c.categoryname
------解决方案--------------------
select
d.dname,
c.categoryname ,
sum(a.quantity) as Q1 ,
sum(b.quantity) as Q2
from a , b, c , d
where a.did = d.did
and d.did = b.did
and a.categoryid = c.categoryid
and b.categoryid = c.categoryid
group by
d.dname,
c.categoryname