|
Чем заменить cross apply top 1 ?
|
|||
---|---|---|---|
#18+
Коллеги, осваиваю ASE версия Adaptive Server Enterprise/16.0 GA PL01/EBF 22540 SMP/P/X64/Windows Server/ase160sp00pl01/3523/64-bit/FBO/Tue Apr 15 19:04:17 2014 так вот многие привычные вещи тут отсутствуют. В то числе cross apply. Пытаюсь их заменить на подзапросы и на зависимые запросы. И опять ничего не выходит. Вот так не работает в обоих вариантах. Вывести нужно соббсно одну строку из зависимого запроса на каждую строку родительского набора (то что в сиквеле делается через cross aplly (select top 1 order by...) ). Как это делается в АСЕ ??? Код: 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. 29. 30.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 18:47 |
|
Чем заменить cross apply top 1 ?
|
|||
---|---|---|---|
#18+
Кесарь Вот так не работает в обоих вариантах. Вывести нужно соббсно одну строку из зависимого запроса на каждую строку родительского набора (то что в сиквеле делается через cross aplly (select top 1 order by...) ). Вот, полное соответствие: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
При связи один-ко-многим (много строк в B показывают на одну строку в A) ты получишь точно то, что желаешь. Вообще, использовать apply в SQL Server имеет смысл только в случае join с функциями и очень-очень редко оно может дать небольшой выигрыш в производительности против join. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 19:18 |
|
Чем заменить cross apply top 1 ?
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 19:21 |
|
Чем заменить cross apply top 1 ?
|
|||
---|---|---|---|
#18+
White Owl Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Серьёзно что ли? Блин, вот зачем такое вообще писать, усилия прилагать и время тратить??? Этот запрос вернёт классическое пересечение и ничего более. И само собой запись будет не одна. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2021, 14:08 |
|
Чем заменить cross apply top 1 ?
|
|||
---|---|---|---|
#18+
https://www.sql.ru/forum/844750/kak-zadavat-vopros Давай тестовые данные и показывай на них что ты хочешь получить. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2021, 16:49 |
|
Чем заменить cross apply top 1 ?
|
|||
---|---|---|---|
#18+
Кесарь, н-да, разбаловали народ всякими там cross apply. В результате логику внутреннюю не могут построить на атомарных операциях. Много вопросов: * Вам какую именно строку нужно? Произвольную? * Датасет большой? * Индекс есть по fr.value_1 и ключевым полям? трансформируйте подзапрос Код: sql 1. 2. 3. 4. 5. 6.
в агрегат: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
как минимум будет предсказуемо работать запрос, а не выдавать "случайные" значения из ТОР 1 в зависимости от физического хранения информации и прочих фаз луны сатурна и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2021, 09:45 |
|
|
start [/forum/topic.php?fid=55&tid=2009550]: |
0ms |
get settings: |
7ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
27ms |
get topic data: |
4ms |
get forum data: |
1ms |
get page messages: |
135ms |
get tp. blocked users: |
1ms |
others: | 365ms |
total: | 547ms |
0 / 0 |