Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Забавный запрос
|
|||
|---|---|---|---|
|
#18+
Существует у нас БД и меня попросили организовать запрос, на первый взгляд всё тривиально - НО опишу фрагмент: есть главная таблица, такая Table1 (id int, idu int, alias nvarchar(15)) и есть некоторое количество таблиц (Table10,Table20, Table30 и т.д) в каждой из которых есть обязательно поля (id int) и (Code int), а надо эти таблицы сджойнить по полю Тавle1.idu и id в других таблицах, а вот в каких указывается в поле alias, я пытался через скалярную функцию с параметрами в которой выполнять запрос, формирующийся динамически EXEC(...), но он ничего вернуть не может, через временную таблицу, также выяснилось, что в функциях их нельзя использовать, можно конечно расписать "в лоб" все варианты, но количество таблиц для связки может меняться, ну и хотелось сделать красивее. Может подскажите решение? Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 15:57 |
|
||
|
Забавный запрос
|
|||
|---|---|---|---|
|
#18+
Что говорят архитекторы этой БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 15:59 |
|
||
|
Забавный запрос
|
|||
|---|---|---|---|
|
#18+
Ну, это уже другой вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 16:06 |
|
||
|
Забавный запрос
|
|||
|---|---|---|---|
|
#18+
patrick1968, Ничерта не понятно что надо, а что у вас "нельзя" ещё более неясно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 16:10 |
|
||
|
Забавный запрос
|
|||
|---|---|---|---|
|
#18+
patrick1968, вы пишете о решении. не предоставив бизнес-задачи. В этом случае любое решение неверно, так как его нет возможности проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 16:23 |
|
||
|
Забавный запрос
|
|||
|---|---|---|---|
|
#18+
Главная таблица (table1) id idu alias ------------------------- 1 1 table10 1 2 table10 1 1 table20 .... 1 9 table50 Таблица table10 id Code ----------------- 1 111 2 222 Таблица table20 id Code ----------------- 1 11111 2 22222 Надо получить из таблицы 1 и привязать к нему Code id idu alias ------------------------- 1 1 table10 1 2 table10 1 1 table20 .... 1 9 table50 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 16:27 |
|
||
|
Забавный запрос
|
|||
|---|---|---|---|
|
#18+
patrick1968, и что у вас "не возможно" допустим для динамического запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 16:29 |
|
||
|
Забавный запрос
|
|||
|---|---|---|---|
|
#18+
patrick1968Может подскажите решение?Секционированное представление из Table10,Table20, Table30 и т.д. Тогда сможете осуществить желаемое на чистом TSQL Или пишите функцию SQLCLR, которая будет внутри заниматься непотребством по разгребанию перечня таблиц, запроса к каждой и формированием результата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 16:34 |
|
||
|
Забавный запрос
|
|||
|---|---|---|---|
|
#18+
patrick1968, В 1С похожим образом сделана работа с полями составного типа: в одной колонке ид (RRref), в соседней -- указание принадлежности этого ид (TRef). Ну и вариантов особо нет: просто джойнить все возможные таблицы "лесенкой": SELECT * FROM T1 LEFT JOIN T20 ON t1.id = t20.id AND t.alias = 'T20' LEFT JOIN T30 ON t1.id = t30.id AND t.alias = 'T30' ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 16:38 |
|
||
|
Забавный запрос
|
|||
|---|---|---|---|
|
#18+
Ну да первым делом, на ум приходит следующее, написать функцию с динамическим запросом, но EXEC(...) вроде ничего не возвращает, а exec sp_executesql в функциях применять нельзя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 17:04 |
|
||
|
Забавный запрос
|
|||
|---|---|---|---|
|
#18+
patrick1968, Пример для изучения и анализа Код: 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 17:14 |
|
||
|
Забавный запрос
|
|||
|---|---|---|---|
|
#18+
invmpatrick1968Может подскажите решение?Секционированное представление из Table10,Table20, Table30 и т.д. Тогда сможете осуществить желаемое на чистом TSQL+1 Тогда при изменении набора таблиц достаточно будет просто поменять view, причём это можно делать даже программно, там, где добавляются/удаляются эти таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2018, 11:07 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=159&tid=1690073]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 321ms |

| 0 / 0 |
