表格列表
id | user_id |名称
1 | 3 |利斯塔
2 | 3 | ListB
表名人
id | user_id | list_id | celebrity_code
1 | 3 | 1 | AA000297
2 | 3 | 1 | AA000068
3 | 3 | 2 | AA000214
4 | 3 | 2 | AA000348
我正在寻找像这样的JSON对象
[ {id:1,名称:'ListA',名人:[{celebrity_code:AA000297},{celebrity_code:AA000068}]},
{id:2,姓名:'ListB',名人:[{celebrity_code:AA000214},{celebrity_code:AA000348}]}
]
答案 0 :(得分:1)
由于详细信息越来越长,因此将其移至答案中,我认为其他参考资料对未来读者有用。
由于您使用的是MySQL,请查看GROUP_CONCAT
。要获取您的对象,您需要在GROUP_CONCAT
enated字符串上CONCAT
。如果您可以使用更像{id:2, name:'ListB', celebrity_codes:['AA000214','AA000348']}
的架构,那么您将获得更简单的查询。如果您制作基本模式的SQLfiddle(基本上是您的创建表加上上述示例数据的插入),有人甚至可能会为您编写它。 : - )
要明确的是,虽然GROUP_CONCAT
可以做到这一点,但是如果你试图生成的不仅仅是一个相当简单的模式,那么它就会变成一些非常混乱的代码,它开始越来越有意义地将它移入您的应用程序层既可以从代码维护的角度来看,也可以从性能和可扩展性考虑因素。
另请注意,对于其他数据库,SQLLite支持GROUP_CONCAT
:
string_agg
MODEL
使用{{1}}。