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

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

Составил запрос на обновление данных таблицы (состоит из 2-х объединенных по ключевому полю) данными другой таблицы (связанна с одной из первых двух), но выдает ошибку, не знаю что не так(точней догадываюсь, но не знаю как правильно).

UPDATE (DEVICE2M2 JOIN Device2m1 ON Device2m2.Logical_name = Device2m1.Logical_name) LEFT JOIN (CONTCTSM1 ON Device2m1.Contact_name = CONTCTSM1.CONTACT_NAME) 
SET Device2m2.full_corp_str = CONTCTSM1.HPC_CORP_STRUCTURE
WHERE Device2m1.istatus='в эксплуатации' AND Device2m1.Contact_name Like '%)';


Собственно сам запрос выдал SQL в MS Access - думал просто его переправить в MS SQL - да что-то не хочет принимать.
2 июл 15, 17:09    [17844748]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
Oleksii Kovalov
Member

Откуда:
Сообщений: 100
это ж PL/SQL?
2 июл 15, 17:10    [17844766]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
Glory
Member

Откуда:
Сообщений: 104751
ALARMus
да что-то не хочет принимать.

а вы думали что расширения SQL они во всех серверах одинаковые ?
2 июл 15, 17:11    [17844777]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
ALARMus
Member

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

я надеялся что у MS все одинаково :(
2 июл 15, 17:12    [17844783]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
Oleksii Kovalov
Member

Откуда:
Сообщений: 100
https://msdn.microsoft.com/en-us/library/ms177523.aspx

UPDATE sr
SET sr.Name += ' - tool malfunction'
FROM Production.ScrapReason AS sr
JOIN Production.WorkOrder AS wo 
     ON sr.ScrapReasonID = wo.ScrapReasonID
     AND wo.ScrappedQty > 300;
2 июл 15, 17:12    [17844784]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21249
ALARMus, а точно там нужен LEFT JOIN?
2 июл 15, 17:13    [17844788]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
Oleksii Kovalov
Member

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

я надеялся что у MS все одинаково :(


У МС - да, но не с оракулом :)
2 июл 15, 17:13    [17844789]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
ALARMus
Member

Откуда:
Сообщений: 541
Akina
ALARMus, а точно там нужен LEFT JOIN?

Если на словах, то есть три таблицы 1-2-3 последовательно связаны (по неким ключевым полям между 2-3 связь одна к одному - уникальна)
Надо обновить поле в таблице 3 значением из соответствующего поля таблицы 1, при том, не все, а вот какие определяет условие отбора на таблицу 2
2 июл 15, 17:20    [17844835]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
Glory
Member

Откуда:
Сообщений: 104751
ALARMus
Если на словах, то есть три таблицы 1-2-3 последовательно связаны (по неким ключевым полям между 2-3 связь одна к одному - уникальна)
Надо обновить поле в таблице 3 значением из соответствующего поля таблицы 1, при том, не все, а вот какие определяет условие отбора на таблицу 2

Разве вы не задавали подобный вопрос пару месяцев назад ?
2 июл 15, 17:22    [17844848]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21249
ALARMus
Если на словах, то
Это я всё и так вижу. А на мой вопрос ответ будет? Вот точно надо в первой таблице прописывать NULL вместо того, что там есть, если в третьей таблице нет соотв. записи?
2 июл 15, 17:22    [17844849]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
ALARMus
Member

Откуда:
Сообщений: 541
Akina
ALARMus
Если на словах, то
Это я всё и так вижу. А на мой вопрос ответ будет? Вот точно надо в первой таблице прописывать NULL вместо того, что там есть, если в третьей таблице нет соотв. записи?


Нет в первую таблицу вообще ничего писать не надо, обновляется только третья.
Но не для всех значений в таблице 2, которая имеет взаимоодназначную связь с т3, будут находится совпадающие значения в таблице 1. Т.е. в таблице 2 в поле, которое сравнивается с т1, могут быть значения, которых нет в т1
2 июл 15, 17:28    [17844884]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
ALARMus
Member

Откуда:
Сообщений: 541
Oleksii Kovalov
ALARMus
Glory,

я надеялся что у MS все одинаково :(


У МС - да, но не с оракулом :)


А так для удовлетворения своего любопытства - про какой Оракл Вы говорите ? (MS Access или в MS SQL Server)
2 июл 15, 17:54    [17845031]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
Oleksii Kovalov
Member

Откуда:
Сообщений: 100
ALARMus
Oleksii Kovalov
пропущено...


У МС - да, но не с оракулом :)


А так для удовлетворения своего любопытства - про какой Оракл Вы говорите ? (MS Access или в MS SQL Server)

про тот, в котором pl/sql
2 июл 15, 18:02    [17845070]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
ALARMus
Oleksii Kovalov
пропущено...


У МС - да, но не с оракулом :)


А так для удовлетворения своего любопытства - про какой Оракл Вы говорите ? (MS Access или в MS SQL Server)


у майкрософта все одинаково: это же MS SQL Access Oracle Server
2 июл 15, 18:19    [17845153]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21249
ALARMus
Нет в первую таблицу вообще ничего писать не надо, обновляется только третья.
Ну не надо вот только строить из себя это самое... суть вопроса не зависит от того, с какого края считать.
2 июл 15, 18:24    [17845169]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
Добрый Э - Эх
Guest
Oleksii Kovalov,

не, уже даже я спрошу - с какого такого перепуга ты решил, что этот запрос из оракла? я с ораклом работаю с прошлого века (с 1998 года, если быть совсем точным). там такого синтаксиса апдейта отродясь не было, ни в одной из попользованных мною версий (а это вся линейка, начиная с 8, причем простой "восмерки", а не "айной" её модификации.)
2 июл 15, 19:14    [17845361]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
Oleksii Kovalov
Member

Откуда:
Сообщений: 100
Добрый Э - Эх
Oleksii Kovalov,

не, уже даже я спрошу - с какого такого перепуга ты решил, что этот запрос из оракла? я с ораклом работаю с прошлого века (с 1998 года, если быть совсем точным). там такого синтаксиса апдейта отродясь не было, ни в одной из попользованных мною версий (а это вся линейка, начиная с 8, причем простой "восмерки", а не "айной" её модификации.)

ну, если нажать на "цитировать" на стартовом посте, то можно увидеть [s r c PLSQL], это раз
два - я, конечно, с оракулом работал не с восьмерки, а с семёрки, но уже довольно давно и точностей синтаксиса не помню, но конструкция шибко похожа на то, что в оракуле называют " UPDATE operations covering multiple tables" ( https://docs.oracle.com/cd/E17952_01/refman-5.5-en/update.html )

PDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]

где table_reference описано вот тут https://docs.oracle.com/cd/E17952_01/refman-5.5-en/join.html

В третьих, у меня был уточняющий вопрос, а не утверджение
Иногда полезно знать, в какой понятийной систем оперирует спрашивающий, дабы было проще дать ему ответ

Вот как-то так
2 июл 15, 20:13    [17845530]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
ALARMus
Member

Откуда:
Сообщений: 541
Akina
ALARMus
Нет в первую таблицу вообще ничего писать не надо, обновляется только третья.
Ну не надо вот только строить из себя это самое... суть вопроса не зависит от того, с какого края считать.

Если объяснения Вас настолько раздражают, то скажу коротко - "да нужно"
3 июл 15, 09:00    [17846851]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
ALARMus
Member

Откуда:
Сообщений: 541
вообщем получается надо так поменять.

UPDATE T3
SET T3.full_corp_str = T1.HPC_CORP_STRUCTURE
from T3 JOIN T2 ON T3.Logical_name = T2.Logical_name LEFT JOIN T1 ON T2.Contact_name = T1.CONTACT_NAME
WHERE T2.istatus='в эксплуатации' AND T2.Contact_name Like '%)';
3 июл 15, 09:38    [17846980]     Ответить | Цитировать Сообщить модератору
 Re: ошибка в запросе - что не так  [new]
Добрый Э - Эх
Guest
Oleksii Kovalov,

давай зайду с другой стороны - что ты понимаешь под "Oracle"?

З.Ы.
приведенная тобой ссылка на синтаксис апдейта - описывает MySQL, а не Oracle :)
То, что MySQL с недавних пор стало принадлежать ораклу, ещё не значит, что оракл стал май-эс-ку-элем
3 июл 15, 10:58    [17847487]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить