0

SQLサーバーに次のようなテーブルがあります:

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を渡すストアドプロシージャを実行しました..特定の車IDのtransactIDです1086 が、ストアドプロシージャは常に1行のデータを表示しています..問題を再現する方法..my

expected out put at this stage is:

ダメージサイド

scrtch    front
broken      Back
damged       side
4

2 に答える 2

1

あなたの代わりにこのクエリを試してください。変数に 1 つの値を代入しているだけなので、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 に答える