日期:2014-05-18  浏览次数:20381 次

数据库关联问题,请高手来解答。谢谢!

有二张相互关联的表
格式如下
SQL code

  第一张表: A
AID        DESC              setp   dn
1      这是A第1个描述         1     null
2      这是A第2个描述         1     null
3      这是A第3个描述         1     123
4      这是A第4个描述         2     null
6      这是A第5个描述         2     null
7      这是A第6个描述         2     234

 第二张表:  B

BID    AID         BDesc              state
1       4       这是B第1个描述          1
2       6       这是B第2个描述          1   
3       7       这是B第3个描述          1  
4       2       这是B第4个描述          3    
5       1       这是B第5个描述          3    
6       3       这是B第6个描述          3

传入三个参数  分别为 setp   state   dn

事例:   1     3     123
结果:
AID        DESC              setp   dn        BDesc

1      这是A第1个描述         1     null    这是B第5个描述
2      这是A第2个描述         1     null    这是B第4个描述
3      这是A第3个描述         1     123     这是B第6个描述


事例:   1     3     234
结果:
AID        DESC              setp   dn        BDesc

1      这是A第1个描述         1     null    这是B第5个描述
2      这是A第2个描述         1     null    这是B第4个描述


在线等高手来解答  谢谢了!

   




------解决方案--------------------
SQL code

GO
IF OBJECT_ID('P_SP') IS NOT NULL
DROP PROC P_SP
GO
CREATE PROC 
P_SP @setp INT,@state INT,@dn INT
AS
CREATE TABLE #T(
AID INT,
[DESC] VARCHAR(100),
setp INT,
dn  INT,
BDesc VARCHAR(100),
[state] INT
)
INSERT #T
SELECT A.AID,A.[DESC],A.setp,A.dn,B.BDesc,B.[state] FROM [A1] A
LEFT JOIN [ B] B
ON A.AID=B.AID
SELECT  AID,[DESC],setp,dn,BDesc FROM #T
WHERE setp=@setp AND [state]=@state AND DN=@dn