一尘不染

SQL查询以返回用逗号(,)压缩的特定列的值[重复]

sql

我有3个表,分别为:

  • 应用程序(ID,名称)
  • 资源(ID,名称)
  • ApplicationsResources(id,app_id,resource_id)

我想在GUI上显示所有资源名称的表。我想在每一行的一个单元格中列出该资源的所有应用程序(以逗号分隔)。

所以问题是,在SQL中执行此操作的最佳方法是什么,因为我需要获取所有资源,并且还需要获取每种资源的所有应用程序?

我是否先从资源中运行select *,然后循环遍历每个资源,并对每个资源执行单独的查询以获取该资源的应用程序列表?

有没有一种方法可以在一个查询中做到这一点?


阅读 192

收藏
2021-03-17

共1个答案

一尘不染

无法以与数据库无关的方式来执行此操作。因此,您需要像这样获得整个数据集:

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

然后在按 ResName 分组时以 编程* 方式连接 AppName*__

2021-03-17