SQL Server 2005 запрос на обновление с левым соединением не работает - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь выполнить запрос на обновление с левым соединением в SQL Server 2005, но по какой-то причине он не работает.

[РЕДАКТИРОВАТЬ: "не работает" - извините, это означает, что обновление не 'бегаю.Записи не обновляются.Я выполняю этот запрос на обновление в отчете SRSS, потому что используемая мною CRM не разрешает прямой доступ к базе данных - он запускает «Выбирает», «Обновляет», «Вставляет», «Удаляет», но не выдает полезных сообщений об ошибках, если что-то не так.т работает как положено.Работать в темноте, к сожалению!]

Мой оператор SQL выглядит так:

UPDATE [tblSlots]
SET [tblSlots].[PublishedStartTime] = '10:00'
FROM tblSlots
LEFT JOIN tblDays ON tblSlots.SlotDayID = tblDays.DayID
WHERE tblDays.Published = 1

Если я вычеркну строку LEFT JOIN и просто отфильтрую, например, tblSlots.SlotID, обновление будет работатьхорошо.

Но я хотел бы иметь возможность обновлять слоты сразу на ВСЕХ опубликованных днях.

(Я попробовал это просто как JOIN, но это тоже не сработало...)

Я уверен, что это что-то ужасно очевидное ...

Ответы [ 2 ]

0 голосов
/ 02 июня 2019

Ваш синтаксис запроса выглядит нормально для меня, и, как вы сказали, он работает нормально, пока вы не попытаетесь выполнить обновление. Это выстрел в темноте, но если проблема связана с обновлением при выборе из нескольких таблиц, то, возможно, может просто сработать изменение вашего запроса, чтобы он не присоединялся к tblDays.

UPDATE [tblSlots]
--SET [tblSlots].[PublishedStartTime] = '10:00'
SET [tblSlots].[PublishedStartTime] = (select SomeValue from tblDays where DayID = SlotDayID) --If a value is needed from Day table
FROM tblSlots
Where SlotDayID in (select DayID from tblDays WHERE Published = 1 and DayID is not null)
0 голосов
/ 02 июня 2019

Вы можете попробовать:

UPDATE [tblSlots]
SET [tblSlots].[PublishedStartTime] = '10:00'

FROM [tblSlots] ,
(
    SELECT DayID FROM
    [tblSlots]
    LEFT JOIN tblDays 
    ON tblSlots.SlotDayID = tblDays.DayID
    WHERE tblDays.Published = 1
) AS [Data_Days]

WHERE 
[Data_Days].DayId = [tblSlots].SlotDayID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...