Как создать список через запятую, используя SQL-запрос? - PullRequest
53 голосов
/ 30 ноября 2009

У меня есть 3 таблицы под названием:

  • Приложения (идентификатор, имя)
  • Ресурсы (идентификатор, имя)
  • ApplicationsResources (id, app_id, resource_id)

Я хочу показать в графическом интерфейсе таблицу всех имен ресурсов. В одной ячейке в каждой строке я хотел бы перечислить все приложения (разделенные запятыми) этого ресурса.

Итак, вопрос в том, каков наилучший способ сделать это в SQL, поскольку мне нужно получить все ресурсы, а также мне нужно получить все приложения для каждого ресурса?

Запустить ли сначала выборку * из ресурсов, а затем перебрать каждый ресурс и выполнить отдельный запрос для каждого ресурса, чтобы получить список приложений для этого ресурса?

Есть ли способ сделать это в одном запросе?

Ответы [ 11 ]

0 голосов
/ 30 ноября 2009

Нет никакого способа сделать это в зависимости от БД. Таким образом, вам нужно получить весь набор данных следующим образом:

select 
  r.name as ResName, 
  a.name as AppName
from 
  Resouces as r, 
  Applications as a, 
  ApplicationsResources as ar
where
  ar.app_id = a.id 
  and ar.resource_id = r.id

И затем объединить AppName программно при группировании по ResName .

...