|
Помогите написать запрос
|
|||
---|---|---|---|
#18+
Приветствую, помогите написать запрос, суть: Имеются две таблицы SBTaskAttach (вложения в задачу, документы) и SBTask (задачи), один документ может быть вложен в несколько задач. Нужно на выходе получить табличку типа: <ИД вложения> <список задач в строчку через запятую>. Для использования в дальнейшем join-e, джойнить буду по поллю AttachID Список задач, в которые вложен документ я получил таким образом: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Но здесь результат возвращается в переменную, привязать эту строку к в данном случае AttachID я никак не могу. Как можно выкрутиться? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 07:59 |
|
Помогите написать запрос
|
|||
---|---|---|---|
#18+
I dont know, string_agg ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 08:06 |
|
Помогите написать запрос
|
|||
---|---|---|---|
#18+
msLex, Спасибо, но не подойдёт, сервер старый - 2008r2, там такой функции нет :( может как-то можно использовать for xml path('') ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 08:28 |
|
Помогите написать запрос
|
|||
---|---|---|---|
#18+
I dont know, Тема поднималась на форуме много раз Вот, полистайте https://www.sql.ru/forum/afsearch.aspx?s=string_agg&submit=?????&bid=1 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 09:17 |
|
Помогите написать запрос
|
|||
---|---|---|---|
#18+
I dont know, просто список attachID через запятую select ( select attachID + ',' from SBTaskAttach as a for xml path('')) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 11:36 |
|
Помогите написать запрос
|
|||
---|---|---|---|
#18+
godsql, Спасибо, так уже вроде начало получаться. Переписал запрос так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
На выход е практически то что нужно, только почему-то в количестве 10 строк(повторяющихся), как сделать чтобы была одна? Без top-ов и тому подобных явных ограничителей? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 14:08 |
|
Помогите написать запрос
|
|||
---|---|---|---|
#18+
Вроде distinct сразу вначале перед a.attachID помог - в результате осталась одна запись, как надо, это правильный способ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 14:13 |
|
Помогите написать запрос
|
|||
---|---|---|---|
#18+
I dont know, все правильно. Вы по одной и той же таблице делаете проходы. можно заменить from SBTaskAttach a where AttachID = 34974738 на from (select distinct AttachID from SBTaskAttach where AttachID = 34974738) as a ну или по логике, если вообще выборка идет по одному AttachID = 34974738, то from (select AttachID = 34974738) as a ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 18:29 |
|
Помогите написать запрос
|
|||
---|---|---|---|
#18+
или вообще... declare @AttachID int = 34974738 select @AttachID, ( select cast(TaskID as varchar) + ',' from SBTaskAttach as att join (select xrecid from SBTask where StandardRoute not in (24154818, 36257438, 4383004, 20394678, 33665941, 859568, 28612983)) t on att.TaskID = t.XRecID where att.AttachID = @AttachID for xml path('')) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 19:25 |
|
|
start [/forum/topic.php?fid=46&msg=39959765&tid=1686102]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 18ms |
total: | 151ms |
0 / 0 |