我的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特定的汽车id是1086
但存储过程总是显示一行数据..我可以复制我的问题..我
expected out put at this stage is:
scrtch front
broken Back
damged side
答案 0 :(得分: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
答案 1 :(得分:0)
我认为您应该尝试使用表变量或临时表来列出所有记录。
您尝试的方式将始终返回最后一行匹配条件。