参见英文答案 >
How create json format with group-concat mysql? 6个
我有两个不同的表 – 一个称为“产品”,其中包含有关在线商店的产品信息,另一个称为“图像”,其中包含相应的产品图像(每个产品有几个图像).
我想在主表“products”上加入表“images”,并以JSON格式输出结果.
我有两个不同的表 – 一个称为“产品”,其中包含有关在线商店的产品信息,另一个称为“图像”,其中包含相应的产品图像(每个产品有几个图像).
我想在主表“products”上加入表“images”,并以JSON格式输出结果.
表“产品”如下所示(简化):
id | name ----|-------- 57 | apple 58 | tomato 59 | ...
并且产品图像的表格“图像”:
img_id | img | p_id | listorder -------|-------------|------|---------- 32 | apple1.jpg | 57 | 1 33 | apple2.jpg | 57 | 2 34 | tomato1.jpg | 58 | 1 35 | ... | ... | ...
到现在为止,我的查询是这样的:
$sql = "SELECT p.id as p_id,p.name as p_name,i.* FROM products p JOIN (SELECT * FROM images WHERE listorder=1) AS i ON (i.p_id = p.id)";
因此输出(在将数据提取到数组并转换为JSON之后)看起来像这样:
[{ "id": "57","name": "apple","img": "apple1.jpg" },{ "id": "58","name": "tomato","img": "tomato1.jpg" }]
[{ "id": "57","img": [{"img_id": "32","img": "apple1.jpg"},{"img_id": "33","img": "apple2.jpg"}] },"img": [{"img_id": "34","img": "tomato1.jpg"}] }]
解决方法
SELECT p.id as p_id,group_concat(concat('{"img_id":"',i.img_id,'"img":"',i.img,'"}') separator ',') as img FROM products p JOIN (SELECT * FROM images WHERE listorder=1) AS i ON (i.p_id = p.id) GROUP BY p.id,p.name
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。