Удаление из карты базы данных - PullRequest
0 голосов
/ 06 ноября 2008

У меня есть эти 3 таблицы + данные:

items : itemId, itemName
данные: 1, мой предмет один

категории : catId, catName
данные: 1, мой кот один. 2, мой кот два

map : mapId, itemId, catId

Когда вы включаете элемент «мой предмет один» в категорию «мой кот один», вы вставляете [1, 1, 1] в карту. Когда вы добавляете «my item one» в «my cat two», вы вставляете [2, 1, 2] в карту. Теперь давайте скажем, что мы передумали и хотим только элемент в «моей кошке два». Это означает, что нам нужно знать, в каких категориях больше нет элемента, и удалить ассоциации с карты. Какова наиболее эффективная последовательность шагов для этого? (Я ищу решение, которое выйдет за рамки этого тривиального примера.)

Ответы [ 2 ]

3 голосов
/ 06 ноября 2008

Предполагая, что у вас уже есть идентификатор категории для "моего кота два" и идентификатор элемента для "моего элемента 1":

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

Если у вас есть набор категорий, в которых вы хотите сохранить элемент, вы можете:

  1. Удалите все с карты для этого предмета, а затем повторно добавьте набор
  2. Используйте запрос, подобный приведенному выше, но с "AND CatID NOT IN [...]"
0 голосов
/ 06 ноября 2008

Если вы решили, что элемент должен быть только в новой категории, должно работать следующее:

DELETE
     M
FROM
     Map M
WHERE
     M.itemid = @item_id AND
     M.catid <> @new_cat_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...