1

@UserId(int) と @CategoryId(int) を受け取るストアド プロシージャを作成しています。ユーザーとカテゴリの間の接続を切断する必要がありますが、ユーザーは 1 つ以上のサブカテゴリに直接接続されているだけです (この接続は「HelpWith」と呼ばれるテーブルにあります)。各カテゴリ (1 つのカテゴリに複数のサブカテゴリを含めることができます)。値を見つけるために、次の SELECT ステートメントを作成しました。

SELECT SubcategoryId
FROM [Subcategory] as s
LEFT JOIN [Category] as c ON c.CategoryId = s.CategoryId
WHERE c.Categoryid = @CategoryId 

上記の SELECT ステートメントは、複数の SubcategoryIds を「見つける」ことができるため、次のようなことができるように、何らかの方法で値をテーブルに挿入する必要があると考えました。

DELETE FROM HelpWith

WHERE SubcategoryId IN (SELECT ID FROM @TempTable)
AND userId = @UserId

これがどのように達成されるか知っている人はいますか?

4

1 に答える 1

0

DELETE で JOIN を使用して解決

USE [MAPP]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[MA_SetTutor_RemoveCategory] 

    @UserId int,
    @CategoryId int

AS
BEGIN

DELETE FROM HelpWith

WHERE SubcategoryId IN
(
    SELECT SubcategoryId
    FROM [Subcategory] AS s
    LEFT JOIN [Category] AS c ON c.CategoryId = s.CategoryId
    WHERE c.CategoryId = @CategoryId
    AND userId = @UserId
)
END 
于 2013-05-28T11:09:19.480 に答える