0

データベースには 2 つのテーブルがあり、1 つは Transactions で、もう 1 つは TransactionHistories です。後者は基本的に監査テーブルであり、トランザクションの挿入、更新、および削除でトリガーが実行され、データのスクリーンショットがキャプチャされます。

列が一致する Transactions テーブルに保存されているすべてのデータを正常に取得していますが、外部キーを使用して別のテーブルからデータを取得しようとすると問題が発生します。例えば:

トランザクション テーブルには「TransactionType_TransactionTypeId」フィールドがありますが、監査テーブルでは「名前」に相当するものを「TransactionTypeName」として保存したいと考えています。これは、「TransactionTypeId」フィールドと「Name」フィールドを持つ「TransactionTypes」テーブルから入力する必要があります。

私たちが望むようにこれを取得するためのクエリを書くのに苦労しています。私は次のようなことを試みていますが、ほとんど成功していません:

SELECT @TransactionTypeName=Name
FROM TransactionTypes
WHERE inserted.TransactionType_TransactionTypeId=TransactionTypes.TransactionTypeId;

それは構文上の悪夢だと思います。誰かが私を正しい方向に向けることができれば、私は非常に感謝しています!

4

1 に答える 1

0

名前を取得するには、次のことを行う必要があります

select @TransactionTypeName = TT.Name
from inserted as i
    left outer join TransactionTypes as TT on TT.TransactionTypeId = i.TransactionType_TransactionTypeId

insertedただし、テーブルには複数の行を含めることができ、1 行のみの値を取得していることを知っておく必要があります。

于 2012-11-01T19:40:39.620 に答える