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

Откуда:
Сообщений: 20
INSERT INTO [DB1].dbo.Owners
SELECT DISTINCT 1,isNULL(LTRIM(RTRIM(o.FmOwn)),''),isNULL(LTRIM(RTRIM(o.NmOwn)),''),isNULL(LTRIM(RTRIM(o.PtOwn)),''),2,isNULL(o.BirthDate,0),NULL
FROM [DB2].dbo.Owners as o
WHERE EXISTS (SELECT 1,isNULL(LTRIM(RTRIM(own.FmOwn)),''),isNULL(LTRIM(RTRIM(own.NmOwn)),''),isNULL(LTRIM(RTRIM(own.PtOwn)),''),2,isNULL(own.BirthDate,0),NULL
FROM [DB2].dbo.Owners as own)
9 июн 15, 10:18    [17748022]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Demon737
Правильно ли реализована проверка на добавление уникальных записей в таблицу

MERGE
9 июн 15, 10:21    [17748042]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Demon737
Member

Откуда:
Сообщений: 20
Нужно проводить проверку на уникальность записи добавляемой и если есть то не добавлять, там NOT EXISTS чуток не то кинул, но у меня при выполнении этого запроса вообще ничего не добавляется при том что в DB1 есть 50к записей а во второй 80к
9 июн 15, 10:23    [17748053]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21194
INSERT INTO [DB1].dbo.Owners 
SELECT DISTINCT 
  1,
  isNULL(LTRIM(RTRIM(o.FmOwn)),''),
  isNULL(LTRIM(RTRIM(o.NmOwn)),''),
  isNULL(LTRIM(RTRIM(o.PtOwn)),''),
  2,
  isNULL(o.BirthDate,0),
  NULL
FROM [DB2].dbo.Owners as o
WHERE EXISTS (
SELECT 
  1,
  isNULL(LTRIM(RTRIM(own.FmOwn)),''),
  isNULL(LTRIM(RTRIM(own.NmOwn)),''),
  isNULL(LTRIM(RTRIM(own.PtOwn)),''),
  2,
  isNULL(own.BirthDate,0),
  NULL
FROM [DB2].dbo.Owners as own
) 
Чё за бред... добавить в таблицу записи из другой таблицы, если в этой самой другой таблице есть записи... ну идиотизм же...
9 июн 15, 10:25    [17748064]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Akina
INSERT INTO [DB1].dbo.Owners 
SELECT DISTINCT 
  1,
  isNULL(LTRIM(RTRIM(o.FmOwn)),''),
  isNULL(LTRIM(RTRIM(o.NmOwn)),''),
  isNULL(LTRIM(RTRIM(o.PtOwn)),''),
  2,
  isNULL(o.BirthDate,0),
  NULL
FROM [DB2].dbo.Owners as o
WHERE EXISTS (
SELECT 
  1,
  isNULL(LTRIM(RTRIM(own.FmOwn)),''),
  isNULL(LTRIM(RTRIM(own.NmOwn)),''),
  isNULL(LTRIM(RTRIM(own.PtOwn)),''),
  2,
  isNULL(own.BirthDate,0),
  NULL
FROM [DB2].dbo.Owners as own
) 
Чё за бред... добавить в таблицу записи из другой таблицы, если в этой самой другой таблице есть записи... ну идиотизм же...

Вот тут ошибка, наверняка там [DB1] должно быть.
9 июн 15, 10:26    [17748077]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Demon737
Member

Откуда:
Сообщений: 20
Akina, нужно провести слияние 2ух таблиц из разных баз данных, при том условии чтобы небыло дубликатов данных
9 июн 15, 10:27    [17748084]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Ну и WHERE внутри NOT EXISTS со сравнением строк не хватает... Иначе NOT EXISTS всегда будет возвращать FALSE, и ничего не вставит, опять таки.
9 июн 15, 10:28    [17748087]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
iap
Member

Откуда: Москва
Сообщений: 47107
Demon737
Нужно проводить проверку на уникальность записи добавляемой и если есть то не добавлять, там NOT EXISTS чуток не то кинул, но у меня при выполнении этого запроса вообще ничего не добавляется при том что в DB1 есть 50к записей а во второй 80к
А где у Вас привязка подзапроса в NOT EXISTS к основному SELECTу?
В SELECTе внутри EXISTS() не стоит перечислять поля и выражения.
Достаточно написать звёздочку *.
Там главное - обычно в WHERE.
9 июн 15, 10:28    [17748089]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Demon737
Member

Откуда:
Сообщений: 20
да там DB1 - при публикации чуть ошибся. Но не пойму как может 50к записей перекрывать 80к при том условии что 50к эти уникальны
9 июн 15, 10:29    [17748104]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Demon737
Но не пойму как может 50к записей перекрывать 80к при том условии что 50к эти уникальны

Потому что ваш подзапрос exists никак не связан с таблицей. И проверят просто наличие хоть одной записи. Все равно какой

ЗЫ
И не надо писать в подзапросе exists список полей, он не нужен
9 июн 15, 10:31    [17748126]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Demon737
Member

Откуда:
Сообщений: 20
Glory, а как привязать?
9 июн 15, 10:33    [17748151]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Demon737
Glory, а как привязать?

Хм. Использовать в подзапросе сравнение полей из разных таблиц ?
9 июн 15, 10:34    [17748157]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21194
Minamoto
наверняка там [DB1] должно быть.

И что получится? добавить в первую таблицу записи из второй таблицы, если в первой таблице есть записи? чёта умнее-то не стало...
9 июн 15, 10:34    [17748158]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Demon737
Member

Откуда:
Сообщений: 20
Akina, там NOT EXISTS стоит, тобишь если нет то добавлять
9 июн 15, 10:37    [17748171]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21194
Вообще - чисто теоретически на первой таблице должен быть некий уникальный индекс (кроме первичного ключа), следящий за непротиворечивостью в ней данных (судя по написанному, бизнес-логика не допускает дублей). А тогда это чистый MERGE с пустым блоком WHEN MATCHED THEN.
9 июн 15, 10:37    [17748178]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Demon737, ну да, если в таблице в DB1 нет ни одной записи, то добавлять.

Поскольку в вашей таблице записи есть, скрипт ничего и не добавляет. Скрипт работает верно.
9 июн 15, 10:38    [17748187]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Demon737
там NOT EXISTS стоит, тобишь если нет то добавлять

Вы не правильно понимаете синтаксис.
EXISTS проверят возвращает ли ваш подзапрос хоть одну запись.
Запустите запрос внутри EXISTS отдельно и узнайте, сколько записей он возвращает.
9 июн 15, 10:39    [17748190]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21194
Demon737, да один хрен! добавить в первую таблицу записи из второй таблицы, если в первой таблице нет записей!

Ты думать-то будешь? или так и будешь тупо править эту ерунду, пытаясь уговорить сервер сделать то, что ты хочешь? не выйдет - машина дура, и будет делать только то, что ты сказал.
9 июн 15, 10:40    [17748202]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Demon737
Member

Откуда:
Сообщений: 20
Akina, Все понял в чем туплю(( А как тогда решить задачю?
9 июн 15, 10:45    [17748242]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Demon737
А как тогда решить задачю?

Вы знаете, что такое JOIN ?
Умеете связывать несколько таблиц в одном запросе ?
9 июн 15, 10:47    [17748253]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Demon737
Member

Откуда:
Сообщений: 20
Glory, да
9 июн 15, 10:48    [17748260]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Demon737
Glory, да

ну так и напишите тогда запрос с использованием этих конструкций
9 июн 15, 10:49    [17748275]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21194
Demon737
как тогда решить задачю?

17748042
https://msdn.microsoft.com/en-us/library/bb510625(v=sql.105).aspx
9 июн 15, 10:50    [17748288]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4453
Это что такое?
 ... EXISTS (SELECT 1,isNULL(LTRIM(RTRIM(own.FmOwn)),''),isNULL(LTRIM(RTRIM(own.NmOwn)),''),isNULL(LTRIM(RTRIM(own.PtOwn)),''),2,isNULL(own.BirthDate,0),NULL
FROM [DB2].dbo.Owners as own) 

Результат будет ровно тем же, что и
 ... EXISTS (SELECT 1 FROM [DB2].dbo.Owners as own) 

К чему огород городить?
Притом наверно хотелось совсем другого?
9 июн 15, 10:58    [17748354]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли реализована проверка на добавление уникальных записей в таблицу  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4453
Demon737
Нужно проводить проверку на уникальность записи добавляемой

По каким полям определяется уникальность?
9 июн 15, 11:00    [17748367]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить