我的模式是由这样的:Postgres的 - 查询表多对多的关系
channel
- >channels_categories
- >category
一个通道可以具有很多类,和类别可以属于许多信道。
当我查询频道时,我想获得他们的频道类别。
无论如何,如果我使用JOIN
我会简单地获得每个类别的重复频道。
[
{
"channel_name": "Channel1",
"category_name": "Category1",
"category_id": "1"
},
{
"channel_name": "Channel1",
"category_name": "Category2"
"category_id": "2"
}
]
理想的结果格式(JSON)会是这样的:
{
channel_name: 'Channel1',
categories: [{/**category**/}, ....]
}
有没有一种方法,我可以实现这个结果的格式只是SQL?
只需使用[string_agg](https://www.postgresql.org/docs/9.1/static/functions-aggregate.html)作为类别和[concat](https://www.postgresql。 org/docs/9.1/static/functions-string.html)添加方括号。 – RonaldFindling
让我明白,这将在类别只是一个字符串的情况下工作?如果我在结果中也有类别ID,该怎么办? – pietrovismara
如果你还想加入他们的字符串,你应该可以做同样的事情。像'select channel_name,string_agg(category_name,','),sting_agg(category_id,',')...'我现在没有postgresDB,现在就试试看吧 – RonaldFindling