3

テーブル値パラメーターを使用してインポートされた名前をフィルター処理するストアド プロシージャを作成しようとしています。インポートされた名前のリストを取得し、データベースに存在しないか、特定のタイプのメッセージを既に受信した名前のリストを返す必要があります。

私が苦労している部分は、結合を作成する方法です。IS NULL チェックを使用した左外部結合は、1 つのテーブル チェックでは機能しますが、2 つのテーブルについてはわかりません。どんな助けでも大歓迎です。ありがとう!

私はMS SQL 2012を使用しています。列を持つテーブル:

Recipients: 
id | name 

SendResults:
id | recipientid | type

テス

CREATE PROCEDURE [dbo].[usp_RecipientsSendCheck]
(
     @Type int 
    ,@RecipientsImports dbo.RecipientsImport READONLY
)
AS
BEGIN

    SELECT i.Name FROM @RecipientsImports i

    LEFT JOIN Recipients r
    ON i.Name = r.Name

    LEFT JOIN SendResults s
    ON s.RecipientId = r.id 

    WHERE r.Name IS NULL OR Type <> @Type

END

ユーザー定義のテーブル タイプ

CREATE TYPE [dbo].[RecipientsImport] AS TABLE(
    [Name] [nchar](10) NOT NULL
)
4

1 に答える 1