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

Откуда:
Сообщений: 14
Здравствуйте,

у меня 2 таблицы, tbl1 и tbl2.
В Tbl1 хранятся некоторые данные плюс все данные из Tbl2.

Подскажите пожалуйста, как удалить из TBL1 те строки, которые отсутствуют в Tbl2, заранее спасибо.
24 дек 18, 11:54    [21771866]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1067
Tigran117,
not exists
24 дек 18, 11:56    [21771869]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Tigran117
Здравствуйте,

у меня 2 таблицы, tbl1 и tbl2.
В Tbl1 хранятся некоторые данные плюс все данные из Tbl2.

Подскажите пожалуйста, как удалить из TBL1 те строки, которые отсутствуют в Tbl2, заранее спасибо.

Если это сделать - в TBL1 останутся только "все данные из Tbl2".
Поэтому можно подумать об извращенном варианте - таки удалить таблицу tbl1 и сделать view с таким именем как "select column1, column2, ...., last_column from tbl2".
24 дек 18, 12:00    [21771873]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
Tigran117
Member

Откуда:
Сообщений: 14
Забыл упомянуть, абсолютно идентичны, и их можно связать с помощью join
24 дек 18, 12:01    [21771874]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
Tigran117
Member

Откуда:
Сообщений: 14
Andy_OLAP,

tbl2 у меня темповая таблица
24 дек 18, 12:03    [21771875]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Tigran117
Andy_OLAP,

tbl2 у меня темповая таблица

1. Вот Вы удалили строки из tbl1, потом сервер на перезагрузку - и строки из таблицы tbl2 пропали. Вы уверены, что они Вам больше не понадобятся?
2. Работаете Вы с базой по паспортным данным. Идентификатора строки однозначного нет. Вы решили сделать "финт ушами" - взяли одинаковые строки из tbl1 типа "Иванов. Иван. паспорт 123" и сделав "group by column1, column2, column3 having count(*)>1" записали в tbl2. Теперь Вы хотите вычистить дубликаты из tbl1, ведь так? Признавайтесь, можете признание не подписывать, тут все свои.
А цимес в том, что запустив delete - Вы удалите ВСЕ строки "Иванов. Иван. паспорт 123", а нужно ОДНУ из этого набора оставить.
Следовательно - Вы после этого delete обратно перельете сгруппированные строки из tbl2 в tbl1.

Но вот в чем вопрос - Вы ведь уже признались, что tbl2 - "темповая". Где гарантия, что она сохранится в системе МЕЖДУ этапом по удалению из tbl1 ВСЕХ задублированных строк и этапом по обратной переливке уникальных строк из tbl2?

Может быть, Вам оперировать терминами "постоянные таблицы" и "ETL процесс по очистке данных от дубликатов"?
24 дек 18, 12:10    [21771885]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
Tigran117
Member

Откуда:
Сообщений: 14
Andy_OLAP,

Смотрите, tbl1 у меня таблица, в которой хранится информация о некоторых клиентов, те строки которые мне нужно удалить, были обновляны (например изменился номер телефона) и они хранятся в другой темповой таблице, теперь мне нужно удалить старые записи, чтобы записать новые в Tbl1 , все эти действия происходят при работе процедуры, автоматически 2 раза в день.
24 дек 18, 13:23    [21771986]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
Tigran117
Member

Откуда:
Сообщений: 14
Andy_OLAP,

В таблицах нет дубликатов.
24 дек 18, 13:25    [21771990]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Tigran117
Andy_OLAP,

Смотрите, tbl1 у меня таблица, в которой хранится информация о некоторых клиентов, те строки которые мне нужно удалить, были обновляны (например изменился номер телефона) и они хранятся в другой темповой таблице, теперь мне нужно удалить старые записи, чтобы записать новые в Tbl1 , все эти действия происходят при работе процедуры, автоматически 2 раза в день.

Посмотрите на это с другой стороны. В tbl1 есть строка с клиентов и номером телефона. Номер телефона поменялся. Вы делаете так - пишите зачем-то в ТЕМПОВУЮ таблицу tbl2 новый нормальный номер, затем Вы хотите удалить из таблицы tbl1 строку со старым номером, чтобы ВСТАВИТЬ строку с новым номером. После этого старый номер исчезнет. Хотя можно не удалять, а поставить признак "строка не действительна". А можно обновить строк в tbl1 и назвать столбец "актуальный номер телефона", а ВСЕ номера телефонов клиентов тоже НИКОГДА не удалять, а хранить в постоянной таблице tbl3 со столбцами - "уникальный id клиента", "уникальный номер", "дата начала действия телефона у клиента", "дата окончания действия телефона у клиента" (NOT NULL, для незакрытых записей ставить 9999-й год), "признак актуальной записи" (1 для одной записи и 0 для всех прочих телефонов клиента, а если ему МОЖНО дозвониться по двум разным номерам - ставить 1 для всех таких записей).

Понимаете? В tbl1 основной номер, но можно дозвониться до клиента и по другим актуальнымн номерам из tbl3. И даже посмотреть, какой номер был старый у него на момент выставления счета в прошлом.

В общем, проектированием DWH должен заниматься архитектор. А не латать дыры, удаляя строки из основной таблицы и храня важную и нужную информацию в "темповых" таблицах.
24 дек 18, 14:14    [21772086]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Tigran117
Подскажите пожалуйста, как удалить из TBL1 те строки, которые отсутствуют в Tbl2, заранее спасибо.

Я к тому, что подсказать Вам можно. Но это условно говоря ответить на вопрос "включать ли мне сигнал поворота при развороте через двойную сплошную, не дожидаясь разметки, которая позволяет это сделать". Вам ответят "конечно, включать, чтобы соседи по потоку поняли, куда Вы планируете свернуть". Но затем Вы же откроете новую тему "меня задержали гаишники, отобрали права за пересечение двойной сплошной, как вернуть права". Понимаете аналогию?
24 дек 18, 14:16    [21772090]     Ответить | Цитировать Сообщить модератору
 Re: DELETE  [new]
Tigran117
Member

Откуда:
Сообщений: 14
Andy_OLAP,

В темповой tbl2 у меня данные, собранные из свыше 10 таблиц, это те люди, о которых информация не менялись, еще у меня есть третья таблица, tbl3, это те люди, о которых информация менялись. теперь мне необходима обновить tbl1 новомы данными из tbl3, в место этого я хочу удалить те строки из tbl1, которые отсутствуют в tbl2 и потом записать строки из tbl3 в tbl1.

Надеюсь вы меня поняли
24 дек 18, 15:00    [21772177]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить