powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться
13 сообщений из 13, страница 1 из 1
Помогите разобраться
    #39896459
Qwerty112233
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может кто объяснить, почему этот код выполняется без ошибок. По идее он не должен его выполнить из-за ошибки в последней строке, где
Код: sql
1.
WHERE Id IN (SELECT id FROM Services)

.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
;WITH Services AS
(
SELECT
serv.Amount 
FROM Recipient rec
JOIN IndividualProgram ip
ON ip.RecipientId = rec.Id
AND ip.IsDeleted = 0
JOIN SocialDocument socDoc
ON socDoc.IndividualProgramId = ip.Id
AND socDoc.IsDeleted = 0
JOIN ServicePeriod servPer
ON servPer.SocialDocumentId= socDoc.Id
AND servPer.IsDeleted = 0
AND servPer.Year = 2019
AND servPer.Month = 12
JOIN Service serv
ON serv.ServicePeriodId = servPer.Id
AND serv.IsDeleted = 0
AND serv.ServiceKindId = 33
WHERE rec.IsDeleted = 0
AND rec.ResidencePlaceId = 3

)

UPDATE Service
SET Amount = 8.11
WHERE Id IN (SELECT id FROM Services)
...
Рейтинг: 0 / 0
Помогите разобраться
    #39896461
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwerty112233,

пишите алиасы... всегда... вообще всегда :)
...
Рейтинг: 0 / 0
Помогите разобраться
    #39896464
Qwerty112233
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,

Оно выполнится даже так
Код: sql
1.
2.
3.
4.
5.
;WITH Services AS
(
SELECT
serv.Amount as something
....



Код: sql
1.
2.
3.
UPDATE Service
SET Amount = 8.11
WHERE Id IN (SELECT id FROM Services)
...
Рейтинг: 0 / 0
Помогите разобраться
    #39896467
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwerty112233,

ну тогда узнайте что такое алиасы...

Код: sql
1.
2.
3.
UPDATE Service
SET Amount = 8.11
WHERE Id IN (SELECT a.id FROM Services as a)
...
Рейтинг: 0 / 0
Помогите разобраться
    #39896469
Qwerty112233
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,

Все это понятно и известно. Не понятно почему не возникает ошибки при выполнении этого кода?
...
Рейтинг: 0 / 0
Помогите разобраться
    #39896472
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwerty112233
TaPaK,

Все это понятно и известно. Не понятно почему не возникает ошибки при выполнении этого кода?

потому что id берётся из того что внутри и если нет то выше
...
Рейтинг: 0 / 0
Помогите разобраться
    #39896474
Qwerty112233
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,

Не совсем понял мысль. Т.е. id в конструкции
Код: sql
1.
SELECT id FROM Services

в данном случае берется не из Services, а из Service?
...
Рейтинг: 0 / 0
Помогите разобраться
    #39896478
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwerty112233
TaPaK,

Не совсем понял мысль. Т.е. id в конструкции
Код: sql
1.
SELECT id FROM Services

в данном случае берется не из Services, а из Service?

ага, где-то и написано, но лень искать. Все кто не пишет алиасы всегда на этом страдают и надеюсь очень сильно

https://docs.microsoft.com/en-us/sql/t-sql/queries/select-clause-transact-sql?view=sql-server-ver15
авторIs the name of a column to return. Qualify column_name to prevent an ambiguous reference, such as occurs when two tables in the FROM clause have columns with duplicate names. For example, the SalesOrderHeader and SalesOrderDetail tables in the AdventureWorks2012 database both have a column named ModifiedDate. If the two tables are joined in a query, the modified date of the SalesOrderDetail entries can be specified in the select list as SalesOrderDetail.ModifiedDate.
...
Рейтинг: 0 / 0
Помогите разобраться
    #39896486
Qwerty112233
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,

Ну здесь немного другой случай, конечно. Ожидалось, что будет ошибка и этого вполне логично ожидать, как я считаю
...
Рейтинг: 0 / 0
Помогите разобраться
    #39896491
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwerty112233
TaPaK,

Ну здесь немного другой случай, конечно. Ожидалось, что будет ошибка и этого вполне логично ожидать, как я считаю

ваше возмущение не знает пределов? в Редмонд!
...
Рейтинг: 0 / 0
Помогите разобраться
    #39896496
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwerty112233
Ну здесь немного другой случай, конечно. Ожидалось, что будет ошибка и этого вполне логично ожидать, как я считаю

В подзапросе должна быть возможность обратиться и к полям подзапроса, и к полям вышестоящего набора данных. Каким образом сервер должен догадаться, что вы имели в виду именно поле в Services, по виду подзапроса?
...
Рейтинг: 0 / 0
Помогите разобраться
    #39896554
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shakill
Qwerty112233
Ну здесь немного другой случай, конечно. Ожидалось, что будет ошибка и этого вполне логично ожидать, как я считаю

В подзапросе должна быть возможность обратиться и к полям подзапроса, и к полям вышестоящего набора данных. Каким образом сервер должен догадаться, что вы имели в виду именно поле в Services, по виду подзапроса?
+100500
Иначе как реализовать коррелированные подзапросы?
...
Рейтинг: 0 / 0
Помогите разобраться
    #39896609
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwerty112233
Ожидалось, что будет ошибка и этого вполне логично ожидать, как я считаю
Почему "ожидалось"??? поля из таблиц верхнего уровня разрешено использовать в подзапросах, разве вы этого не знали?

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


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