sql关于多表查询统计问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 20:03:58
A表(sID自动编号;ordNum唯一)
sID ordNum oDate
1 y001 2008-1-1
2 y002 2008-1-1
3 y003 2008-2-1
B表(sID自动编号,A表.ordNum=B表.ordNum)
pID ordNum gID price quantity
1 y001 1 10.0 2
2 y001 2 11.0 4
3 y002 1 12.0 5
4 y003 1 12.0 6

当日期为2008年1月时,结果:
gID allQuantity
1 7 //(该结果是:B表中pID=1与pID=3中2+5这样得出来的)
2 5

当日期为2008年2月时,结果:
gID allQuantity
1 6

也就是说,统计B表中所有gID相同的quantity和值,统计条件是A表中oDate为某一年月。
这个用途是用于动态网页里面的sql查询,希望大伙能帮下忙,谢谢!
在join前要不要用INNER LEFT RIGHT FULL 这些词呢?那些词的区别有什么不同呢,能解释一下吗?谢谢~!查了一下,对那些内连,外连之类的不是很明白!!

select gID,sum(quantity) as allQuantity
from A表 join B表 on A表.ordNum = B表.ordNum
where year(oDate)=2008 and month(oDate)=1
group by gID

不写的话默认就是 inner
inner 是有相等才显示
left 是左边的都显示,右边没有与它相等的显示 NULL
right 是右边的都显示
full 是两边的都显示,没有相等的,则没数据的一边显示 NULL