Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выборка осиротевших записей в дочерней таблице  [new]
Const76
Member

Откуда:
Сообщений: 7
Помогите, пожалуйста, оформить запрос на выбоку сиротских записей из таблицы 2, являющейся дочерней по отношению к таблице 1. Связь один ко многим по ключевым полям NumBook и NumTom.
8 июл 05, 10:13    [1686767]     Ответить | Цитировать Сообщить модератору
 Re: Выборка осиротевших записей в дочерней таблице  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
delete a
from [таблица 2] a
left join [таблица 1] b on b.NumBook = a.NumTom --или наоборот
where a.[любое поле] is null
P.S. И сразу после этого повесить связь.
8 июл 05, 10:15    [1686781]     Ответить | Цитировать Сообщить модератору
 Re: Выборка осиротевших записей в дочерней таблице  [new]
Const76
Member

Откуда:
Сообщений: 7
Гавриленко Сергей Алексеевич
delete a
from [таблица 2] a
left join [таблица 1] b on b.NumBook = a.NumTom --или наоборот
where a.[любое поле] is null
P.S. И сразу после этого повесить связь.


Спасибо, но не получается. Попробую описать поточнее. Ключевые поля NumBook и NumTom присутсвуют в обеих таблицах. Задача - получить записи дочерней таблицы 2 для которых нет связанных записей в родительской таблице 1.
8 июл 05, 10:32    [1686866]     Ответить | Цитировать Сообщить модератору
 Re: Выборка осиротевших записей в дочерней таблице  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
После on пишите равенство соответствующих ключей. Или давайте скрипты со структурой с указанием того, по чему идет связь.
8 июл 05, 10:33    [1686879]     Ответить | Цитировать Сообщить модератору
 Re: Выборка осиротевших записей в дочерней таблице  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34243
Блог
>Гавриленко Сергей Алексеевич
where a.[любое поле] is null - в худшем случае может очистить всю таблицу)

delete a
from [таблица 2] a
left join [таблица 1] b on b.NumBook = a.NumBook AND
                           b.NumTom  = a.NumTom
where a.[NumBook] is null
8 июл 05, 10:43    [1686944]     Ответить | Цитировать Сообщить модератору
 Re: Выборка осиротевших записей в дочерней таблице  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
автор
where a.[любое поле] is null - в худшем случае может очистить всю таблицу)

Скажем так, не [любое поле], а [любое not null поле].
8 июл 05, 10:45    [1686949]     Ответить | Цитировать Сообщить модератору
 Re: Выборка осиротевших записей в дочерней таблице  [new]
Vladimir Kovalevskii
Member

Откуда:
Сообщений: 696
FOREIGN KEY использовать надо было.
8 июл 05, 10:48    [1686966]     Ответить | Цитировать Сообщить модератору
 Re: Выборка осиротевших записей в дочерней таблице  [new]
Const76
Member

Откуда:
Сообщений: 7
Спасибо, Сергей Алексеевич и Критик. Все обработал.

Vladimir Kovalevskii
FOREIGN KEY использовать надо было.

подскажите, пожалуйста.
8 июл 05, 11:14    [1687113]     Ответить | Цитировать Сообщить модератору
 Re: Выборка осиротевших записей в дочерней таблице  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34243
Блог
Что-то типа
ALTER TABLE [таблица 2]
  ADD CONSTRAINT [FK_название] FOREIGN KEY(NumBook, NumTom) REFERENCES [таблица 2](NumBook, NumTom) ON DELETE NO ACTION
Почитайте в BOL по FOREIGN KEY и Constraints
8 июл 05, 12:15    [1687486]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить