|
Запрос с cross apply
|
|||
---|---|---|---|
#18+
Почему такой запрос работает? Код: sql 1. 2.
работает при условии, что определен псевдоним выражения в скобках после cross apply t1; определен псевдоним field1 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 15:53 |
|
Запрос с cross apply
|
|||
---|---|---|---|
#18+
Диана Орел, работает потому, что выражение синтаксически допустимое. Почему требуется указывать field1? Это необходимо согласно требований реляционной механики. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 16:09 |
|
Запрос с cross apply
|
|||
---|---|---|---|
#18+
Владислав Колосов Диана Орел, работает потому, что выражение синтаксически допустимое. Почему требуется указывать field1? Это необходимо согласно требований реляционной механики. Я могу зазубрить, но хочется понять. Как SQL Server знает, что name из таблицы dbo.T_branch_snst? cross apply с правой стороны использует или табличную функцию или подзапрос. Где в MSDN такое написано? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 16:30 |
|
Запрос с cross apply
|
|||
---|---|---|---|
#18+
Диана Орел Как SQL Server знает, что name из таблицы dbo.T_branch_snst Потому что больше неоткуда. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 17:03 |
|
Запрос с cross apply
|
|||
---|---|---|---|
#18+
Диана Орел Где в MSDN такое написано? https://docs.microsoft.com/en-us/sql/t-sql/queries/select-transact-sql?view=sql-server-ver15 То, что в квадратных скобках, необязательно, то есть обязательно только Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 17:58 |
|
Запрос с cross apply
|
|||
---|---|---|---|
#18+
alexeyvg, перечитав ссылку в msdn выполняется запрос так: 1. from 2. cross apply 3. select, который в скобках 4. select, который первый стоит. Шаги 2 и 3 повторяются для каждой строки внешнего запроса. Такой алгоритм? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2021, 10:11 |
|
Запрос с cross apply
|
|||
---|---|---|---|
#18+
https://docs.microsoft.com/en-us/sql/t-sql/queries/from-transact-sql?view=sql-server-ver15 left_table_source { CROSS | OUTER } APPLY right_table_source Specifies that the right_table_source of the APPLY operator is evaluated against every row of the left_table_source . This functionality is useful when the right_table_source contains a table-valued function that takes column values from the left_table_source as one of its arguments. When OUTER is specified, one row is produced for each row of the left_table_source even when the right_table_source evaluates against that row and returns an empty result set. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2021, 11:37 |
|
Запрос с cross apply
|
|||
---|---|---|---|
#18+
Диана Орел Владислав Колосов Диана Орел, работает потому, что выражение синтаксически допустимое. Почему требуется указывать field1? Это необходимо согласно требований реляционной механики. Я могу зазубрить, но хочется понять. Как SQL Server знает, что name из таблицы dbo.T_branch_snst? cross apply с правой стороны использует или табличную функцию или подзапрос. Где в MSDN такое написано? Хде написано - я уже не помню. Но разрешение не полностью квалифицированных имен полей вложенных запросов идет так: 1. Из "ближайших" таблиц этого подзапроса . если не найдено 2. Из таблиц уровнем выше. если не найдено 3. Из таблиц уровнем еще выше. ... Не желаете это учить - не пишите [name] . Пишите ВСЕГДА alias.[name] Иначе надо быть всегда готовым к варианту: я добавил поле в табличку - все запросы базы сломались. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2021, 12:51 |
|
Запрос с cross apply
|
|||
---|---|---|---|
#18+
aleks222, это интересно, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2021, 15:52 |
|
Запрос с cross apply
|
|||
---|---|---|---|
#18+
aleks222 Но разрешение не полностью квалифицированных имен полей вложенных запросов идет так: 1. Из "ближайших" таблиц этого подзапроса . если не найдено 2. Из таблиц уровнем выше. если не найдено 3. Из таблиц уровнем еще выше. ... А если найдено несколько одинаковых в разных таблицах, то вылетит птичка "Ambiguous column name '...'". Так что лучше всегда использовать алиасы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2021, 17:23 |
|
Запрос с cross apply
|
|||
---|---|---|---|
#18+
Сон Веры Павловны А если найдено несколько одинаковых в разных таблицах, то вылетит птичка "Ambiguous column name '...'". Так что лучше всегда использовать алиасы. Далеко не всегда В контексте вопрос (cross apply), скорее нет, чем да. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2021, 18:49 |
|
Запрос с cross apply
|
|||
---|---|---|---|
#18+
aleks222 Не желаете это учить - не пишите [name] . Пишите ВСЕГДА alias.[name] Не надо писать квесты, что бы потом программисты, реализуя какое то плёвое бизнес-требование, долго и нужно вычитывали запрос, который, возможно, на один экран не помещается. Привычка должна быть: если больше одной таблицы - алиас обязателен, если одна - желателен. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2021, 21:06 |
|
Запрос с cross apply
|
|||
---|---|---|---|
#18+
msLex Далеко не всегда В контексте вопрос (cross apply), скорее нет, чем да. А можно пример для случая, когда скорее нет? Я сам такой придумать не могу. Получается только что-то типа такого: Код: sql 1. 2. 3. 4. 5. 6. 7.
Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2021, 06:10 |
|
Запрос с cross apply
|
|||
---|---|---|---|
#18+
В msdn авторUsing APPLY Both the left and right operands of the APPLY operator are table expressions. The main difference between these operands is that the right_table_source can use a table-valued function that takes a column from the left_table_source as one of the arguments of the function. The left_table_source can include table-valued functions, but it cannot contain arguments that are columns from the right_table_source. ответ на мой вопрос. Спасибо, Akina ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2021, 09:14 |
|
Запрос с cross apply
|
|||
---|---|---|---|
#18+
Сон Веры Павловны А можно пример для случая, когда скорее нет? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2021, 09:41 |
|
|
start [/forum/topic.php?fid=46&msg=40115299&tid=1684063]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 163ms |
0 / 0 |