Как бы вы написали этот sql для удаления, если одно из двух полей находятся в наборе значений - PullRequest
0 голосов
/ 18 января 2010

Справочная информация:


У меня есть 2 таблицы:

Компоненты: (идентификатор, имя)

Зависимости: (id, hasaComponentId, isaComponentId)

в этом случае hasaComponentId и isaComponentId являются обоими внешними ключами в таблице компонентов, объединенной компонентами. id

Вопрос


У меня есть набор идентификаторов, которые выбирает пользователь. Я хочу запрос sql, который удалит записи из таблиц зависимостей, где любой из идентификаторов в моем списке идентификаторов либо в поле hasaComponentId , либо в поле isaComponentId .

что такое лучший sql для этого действия?

Ответы [ 2 ]

1 голос
/ 18 января 2010
DELETE Dependencies
FROM Dependencies d, Components c
WHERE
 (  
  (c.id=d.hasaComponentID and d.isaComponentID is null)
  OR
  (c.id=d.isaComponentID and d.hasaComponentID is null)
 )
     AND c.id IN (1,2,3,5)

Не проверено, но выглядит правильно.Сначала убедитесь, что вы выполняете SELECT

1 голос
/ 18 января 2010
DELETE FROM Dependencies WHERE hasaComponentId In (YOUR OTHER QUERY);
DELETE FROM Dependencies WHERE isaComponentId  In (YOUR OTHER QUERY);

ИЛИ

DELETE FROM Dependencies WHERE hasaComponentId In (YOUR OTHER QUERY) OR 
                               isaComponentId  In (YOUR OTHER QUERY);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...