gpt4 book ai didi

php - 使用PHP从MYSQL中的一对多关系获取嵌套的JSON数据

转载 作者:行者123 更新时间:2023-12-05 05:59:55 25 4
gpt4 key购买 nike

我有如下两张表
用户表

<表类="s-表"><头>user_id名字<正文>1齐亚2约翰3拉萨

主题表

<表类="s-表"><头>data_iduser_id主题<正文>11数学21化学31简历42数学52物理63英文

当我查询数据时,我得到这样的结果:

[
{
"user_id": "1",
"name": "zia",
"subject" : "Math"

},
{
"user_id": "1",
"name": "zia",
"subject" : "Chem"
},
{
"user_id": "1",
"name": "zia",
"subject" : "Bio"
},
{
"user_id": "2",
"name": "john",
"subject" : "Math"
},
{
"user_id": "2",
"name": "john",
"subject" : "Phy"
},
{
"user_id": "3",
"name": "Raza",
"subject" : "Eng"
}

]

我的查询如下

SELECT users.user_id , users.name , subjects.subject FROM users,subjects;
Where users.id = subjects.id;

上面显示的结果是这样的,我们为一个学生/用户的每个主题都有一个单独的数据行。

但实际上我想通过以下方式获取数据:

[
{
"user_id": "1",
"name": "zia",
"subject": [
"Math",
"Chem",
"Bio"
]
},
{
"user_id": "2",
"name": "john",
"subject": [
"Math",
"Phy"
]
},
{
"user_id": "3",
"name": "Raza",
"subject": "Eng"
}

]

在这里,如您所见,我们的数据是这样的,即每个学生的所有科目仅在一行或嵌套的 json 格式中

请帮我解决这个问题以前标记为已解决但未解决。

最佳答案

您应该尝试在 MySql 中使用 group_concat 将主题合并到单个列中并按 user_id 分组。

有点像

SELECT users.user_id , users.name , GROUP_CONCAT ( subjects.subject ) as "subjects" FROM users,subjects;
Where users.id = subjects.id group by users.user_id;

预期的输出应该是这样的

[{
"user_id": "1",
"name": "zia",
"subject": "Math, Chem, Bio",
},
{
"user_id": "2",
"name": "john",
"subject": "Math , Phy"
},
{
"user_id": "3",
"name": "Raza",
"subject": "Eng"
}]

然后您可以使用 explode(",",$str)

展开主题

这只是一个示例,请尝试使用它。作为引用,您可以查看 this .

关于php - 使用PHP从MYSQL中的一对多关系获取嵌套的JSON数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67898462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com