0

我的 sql server 中有一个这样的表:

TransactID    Dtid     Sid

1086          5        4
1086          7         8
1086          4         3

我想从相应的表中获取相应的 Dtid 和 Sid 名称。所以我创建了这样的存储过程:

ALTER procedure [dbo].[PDTDamageFetch]
@Carid NVARCHAR(50)

AS

BEGIN
SET NOCOUNT ON
declare @transid integer,@dtid integer,@sid integer,@Damage nvarchar(100),@side nvarchar(100)
select @transid= t.transactID from Transaction_tbl t where t.TBarcode=@Carid
select @dtid= tr.Dtid from TransactDamageAssign_tbl tr where tr.transactID=@transid
select @sid= tr.sid  from TransactDamageAssign_tbl tr where tr.transactID=@transid
select @Damage=dt.DtName  from DamageType_tbl dt where dt.Dtid=@dtid
select @side= ds.SName from DamageSide_tbl ds where ds.Sid=@sid
select @Damage,@side
end

然后我执行了我的存储过程,传递了相应的 carid..transactID 特定的汽车 id1086 但存储过程总是显示一行数据..我如何复制我的问题..my

expected out put at this stage is:

伤害方面

scrtch    front
broken      Back
damged       side
4

2 回答 2

1

试试这个查询而不是你的。你只是将一个值赋给一个变量,这就是为什么你只得到一行

SELECT * FROM Transaction_tbl  t
INNER JOIN TransactDamageAssign_tbl tr ON tr.transactID = t.transactID
INNER JOIN DamageType_tbl dt ON dt.Dtid = tr.Dtid
INNER JOIN DamageSide_tbl ds ON ds.Sid = tr.sid
WHERE t.TBarcode=@Carid
于 2013-10-29T11:13:21.960 回答
0

我认为您应该尝试使用表变量或临时表来列出所有记录。

您尝试的方式将始终返回匹配条件的最后一行。

于 2013-10-29T11:15:51.390 回答