我有两张表,比如
work_assets
-----------------------------------------------------
id | asseturl | previmgurl | carid
-----------------------------------------------------
1 | "pic1.jpg" | "pic2.jpg" | 1
2 | "pic3.jpg" | "pic4.jpg" | 1
3 | "pic5.jpg" | "pic6.jpg" | 2
. | ... | ... | .
. | ... | ... | .
cases
-----------------------------------------------------
id | ... | carid | ...
-----------------------------------------------------
1 | ... | 1 | ...
2 | ... | 2 | ...
3 | ... | 69 | ...
. | ... | ... | ...
. | ... | ... | ...
我的希望是我可以执行某种类型的查询Q
,它可以让我找到基本上是cases
表的JSON,它与{{1}的一对多关系} colummn到关联的carid
和asseturl
,例如
previmgurl
设置:
[
{ id : 1, ..., assetinfo: [ { asseturl : "pic1.jpg", previmgurl: "pic2.jpg"}, { asseturl : "pic3.jpg", previmgurl: "pic4.jpg"} ], ... },
{ id : 2, ... },
{ id: 3, ... },
.
.
.
]
这可能吗?
答案 0 :(得分:1)
恕我直言,你真的不需要在mysql端做那个json转换,因为它效率不高,几乎没有意义。
但是,为了证明这是可能的(与@bannmatt意见相反),这是我的方法:
http://sqlfiddle.com/#!9/6bffb/7
SELECT c.*,
CONCAT('assetinfo : [ ',
COALESCE(
GROUP_CONCAT( CONCAT("{ asseturl: ",
wa.asseturl,
', previmgurl: ',
wa.previmgurl," }")
),
''),
' ]')
FROM cases c
LEFT JOIN work_assets wa
ON c.carid = wa.carid
GROUP BY c.id
答案 1 :(得分:0)
不幸的是,我不认为你能从你的数据库中获得一个SQL查询,它将按照你想要的方式串行化为JSON,因为你描述的结构是多维的 - 即一个嵌套在另一个数组中的数组。