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

关于数据库SQL语句关联搜索的问题?
SQL C#
一,有一按钮,从库存表:A表中搜索出来的数据,如下:
ID 名称 数量A
1  大米 200
2  高粱 100
3  小麦 500
4  大豆 100
5  绿豆 50

二,现在对搜索出来的数据进行出库操作,将出库操作好的数据放在出库表:B表中 如下:
ID AID  名称  数量B
1   4   大豆  50
2   5   绿豆  20

三,我试着用关联去达到自己想要的效果,如代码
select A.*,b.数量B where A.ID=B.AID

搜索出来的数据如下:但这不是我要的效果
ID 名称  数量A   数量B 
1  大豆  100     50       
2  绿豆  50      20       

四,我要的搜索出来的效果如下:这才是我要的效果,我应该如何去写这段代码?
ID 名称  数量A    数量B 
1  大米  200
2  高粱  100
3  小麦  500
4  大豆  100     50       
5  绿豆  50      20       



------解决方案--------------------
select a.*,b.数量B
from a
left join (select aid,sum(数量B) as 数量B from b group by aid) as b 
on A.ID=B.AID


如果一个aid出库记录有多笔,则需要先合并,然后再关联
------解决方案--------------------
declare @ta table (id int,nameA varchar(20),quantityA int)
insert @ta
select 
1 ,'大米', 200 union all select 
2 , '高粱', 100 union all select 
3  ,'小麦', 500 union all select 
4  ,'大豆', 100 union all select 
5  ,'绿豆', 50

declare @tb table (id int,aid int,nameB varchar(20),quantityB int)
insert @tb
select 
1 ,  4  , '大豆',  50 union all select 
2  , 5  , '绿豆',  20
select a.*,b.quantityB from @ta a
left join @tb b on a.id=b.aid 

/*查询结果
1 大米 200 NULL
2 高粱 100 NULL
3 小麦 500 NULL
4 大豆 100 50
5 绿豆 50 20
*/