日期:2014-05-19  浏览次数:20723 次

inner join连接表问题?
在一个数据库中有两个表A(p_id,qty)B(xh,p_id,quantity)其中在A中有数据:
p_id         qty
001             1500
002             1300
.....
B表中:
xh   p_id         quantity
1       001             1000
2       001             500
3       002             1000
4       002             300
............
我用内联时出错:
select   b.p_id, '数量1 '=sum(B.quantity), '数量2 '=sum(A.qty)
from   B   inner   join   A   on   b.p_id   =   a.p_id
group   by   b.p_id
得到数据如下:
p_id         数量2     数量1
001           3000           1500
002           2600           1300
.......
好像数量2就是统计A表的数量时都扩大了一倍,我想得到的是下面的数据才对
p_id         数量2     数量1
001           1500         1500
002           1300         1300
(注:在A表中001的只有1500数据,用单表查时就是1500)
请教高手sql语句该怎么写?

------解决方案--------------------
select *,(select sum(quantity) from 表 where a.p_id=p_id )from A a
------解决方案--------------------
如果A表的p_id是唯一的,则把数量2的SUM()改成MAX():
select b.p_id, '数量1 '=sum(B.quantity), '数量2 '=MAX(A.qty)
from B inner join A on b.p_id = a.p_id
group by b.p_id
------解决方案--------------------
select b.p_id, '数量1 '=sum(B.quantity), '数量2 '=sum(A.qty)
from (select p_id ,sum(quantity) quantity from b group by p_id )b inner join A on b.p_id = a.p_id
group by b.p_id

------解决方案--------------------
sum(A.qty)把你表A中的qty和B中的quantity都加一起了