2008-11-06 129 views
0

我有這3個表+數據:從數據庫映射刪除

項目:的itemId,ITEMNAME
數據:1,我的項目一個

:CATID,catName
數據:1,我的貓一個。 2,我的貓2

地圖:的azazaz,的itemId,CATID

當您在類項目 「我的項目一個」, 「我的貓一」,你插入[1,1,1]進入地圖。當您將「我的項目一」添加到「我的貓二」時,您將[2,1,2]插入到地圖中。現在讓我們說,我們改變了主意,只需要「我的貓二」中的項目。這意味着我們需要知道該項目不再在哪些類別中,並從地圖中刪除關聯。最有效的步驟是什麼? (我在尋找,這將擴展到超過這個簡單的例子,一個解決方案。)

回答

3

假設你已經得到了「我的貓兩個」類別ID和「我的項目1」的項目ID:

DELETE FROM MAP WHERE ItemID = @MyItem1Id 
       AND CatID <> @MyCat2Id 

如果你有一組類別你想保留的項目中,你既可以:

  1. 從地圖該項目刪除一切,然後重新添加組
  2. 使用查詢像上面一樣,但帶有「AND CatID Not In [...]」
0

如果你決定一個項目只應在新的類別,下面應該工作:

DELETE 
    M 
FROM 
    Map M 
WHERE 
    M.itemid = @item_id AND 
    M.catid <> @new_cat_id