Zerpico
@Zerpico

Как сделать запрос из 2 связанных таблиц где данные столбце будут через запятую?

Здравствуйте. Натолкнулся на такую проблему: работаю с базой MS SQL SERVER 2008. Опишу только по проблеме основные таблицы. Есть у меня 2 таблицы такого вида:

Plavka

|              id                      | plavka |
| d6746ae5-56c9-4bb8-b1da-0f0306f3f01a |   60      |
| 570cf89f-ec9b-4e00-97ec-156dec158350 |   61      |
| feb82cfe-f0bc-4f6d-8399-dc7930ace713 |   62      |

Paket

|                 id                   | paket |
| 12a92612-a396-46b4-9c5d-b055d2697428 | 576 |
| 174af3ec-81f8-4c3d-8109-c41543737456 | 577 |

И таблица связок paketPlavka

|            id                        |                paket                 |               plavka                 |
| e25c5831-02c9-4c1c-9624-2ae69a5ebee8 | 12a92612-a396-46b4-9c5d-b055d2697428 | d6746ae5-56c9-4bb8-b1da-0f0306f3f01a |
| b55f655c-3bd8-497c-a290-71f635be4331 | 12a92612-a396-46b4-9c5d-b055d2697428 | 570cf89f-ec9b-4e00-97ec-156dec158350 |
| 3c699c5a-977b-42d3-99c7-f10a03c3beb4 | 174af3ec-81f8-4c3d-8109-c41543737456 | feb82cfe-f0bc-4f6d-8399-dc7930ace713 |

То есть по сути Paket состоит из >= 1 Plavka как мне вывести какой пакет из каких плавок состоит через запятую вида:

| 576 | 60, 61 | | 577 | 62 |

Понимаю то что нужно это делать через процедуру, но не знаю как и или каким способом это всё сделать. Не могли подсказать?

  • Вопрос задан
  • 2920 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
@svd71_1

через фунцию like. Скорость будет только аховой. Но вам похоже это не требуется:

select * from plavka p1, paket p2, plavkapaket p3
where
  p1.id = p3.id and p2.id =p3.packet

данные придут построчно и тогда программно их сформировать в строку.

Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы