Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться / 13 сообщений из 13, страница 1 из 1
29.11.2019, 15:20
    #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
29.11.2019, 15:22
    #39896461
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться
Qwerty112233,

пишите алиасы... всегда... вообще всегда :)
...
Рейтинг: 0 / 0
29.11.2019, 15:27
    #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
29.11.2019, 15:28
    #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
29.11.2019, 15:32
    #39896469
Qwerty112233
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться
TaPaK,

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

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

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

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

в данном случае берется не из Services, а из Service?
...
Рейтинг: 0 / 0
29.11.2019, 15:38
    #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
29.11.2019, 15:46
    #39896486
Qwerty112233
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться
TaPaK,

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

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

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

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

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

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


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