2008-11-06 94 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