Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / DELETE / 11 сообщений из 11, страница 1 из 1
24.12.2018, 11:54
    #39752120
Tigran117
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DELETE
Здравствуйте,

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

Подскажите пожалуйста, как удалить из TBL1 те строки, которые отсутствуют в Tbl2, заранее спасибо.
...
Рейтинг: 0 / 0
24.12.2018, 11:56
    #39752122
waszkiewicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DELETE
Tigran117,
not exists
...
Рейтинг: 0 / 0
24.12.2018, 12:00
    #39752126
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DELETE
Tigran117Здравствуйте,

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

Подскажите пожалуйста, как удалить из TBL1 те строки, которые отсутствуют в Tbl2, заранее спасибо.
Если это сделать - в TBL1 останутся только "все данные из Tbl2".
Поэтому можно подумать об извращенном варианте - таки удалить таблицу tbl1 и сделать view с таким именем как "select column1, column2, ...., last_column from tbl2".
...
Рейтинг: 0 / 0
24.12.2018, 12:01
    #39752127
Tigran117
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DELETE
Забыл упомянуть, абсолютно идентичны, и их можно связать с помощью join
...
Рейтинг: 0 / 0
24.12.2018, 12:03
    #39752128
Tigran117
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DELETE
Andy_OLAP,

tbl2 у меня темповая таблица
...
Рейтинг: 0 / 0
24.12.2018, 12:10
    #39752134
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DELETE
Tigran117Andy_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 процесс по очистке данных от дубликатов"?
...
Рейтинг: 0 / 0
24.12.2018, 13:23
    #39752194
Tigran117
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DELETE
Andy_OLAP,

Смотрите, tbl1 у меня таблица, в которой хранится информация о некоторых клиентов, те строки которые мне нужно удалить, были обновляны (например изменился номер телефона) и они хранятся в другой темповой таблице, теперь мне нужно удалить старые записи, чтобы записать новые в Tbl1 , все эти действия происходят при работе процедуры, автоматически 2 раза в день.
...
Рейтинг: 0 / 0
24.12.2018, 13:25
    #39752196
Tigran117
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DELETE
Andy_OLAP,

В таблицах нет дубликатов.
...
Рейтинг: 0 / 0
24.12.2018, 14:14
    #39752259
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DELETE
Tigran117Andy_OLAP,

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

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

В общем, проектированием DWH должен заниматься архитектор. А не латать дыры, удаляя строки из основной таблицы и храня важную и нужную информацию в "темповых" таблицах.
...
Рейтинг: 0 / 0
24.12.2018, 14:16
    #39752262
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DELETE
Tigran117Подскажите пожалуйста, как удалить из TBL1 те строки, которые отсутствуют в Tbl2, заранее спасибо.
Я к тому, что подсказать Вам можно. Но это условно говоря ответить на вопрос "включать ли мне сигнал поворота при развороте через двойную сплошную, не дожидаясь разметки, которая позволяет это сделать". Вам ответят "конечно, включать, чтобы соседи по потоку поняли, куда Вы планируете свернуть". Но затем Вы же откроете новую тему "меня задержали гаишники, отобрали права за пересечение двойной сплошной, как вернуть права". Понимаете аналогию?
...
Рейтинг: 0 / 0
24.12.2018, 15:00
    #39752321
Tigran117
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DELETE
Andy_OLAP,

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

Надеюсь вы меня поняли
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / DELETE / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]