gpt4 book ai didi

php - 使用子查询在 mysql 中构建嵌套对象

转载 作者:可可西里 更新时间:2023-11-01 08:15:58 25 4
gpt4 key购买 nike

我不确定这在 mysql 中是否可行,但我正在尝试从查询而不是 php 中构建嵌套对象。我有一个调查结果数据库,我想构建一个对象,它的键是问题,值是答案的数组/对象。这可能吗?我正在使用这样的东西:

SELECT 
ss.*,
(SELECT int_value FROM `SubmittedQuestions` AS su WHERE ss.id = su.submitted_survey_id)
FROM
`SubmittedSurveys` as ss;

我必须用 PHP 构建这个对象吗?我的问题是我在 PHP 中执行所有这些循环,我认为构建对象需要一段时间,而如果我可以在 mysql 中执行它,我认为这将是一个快速查询。让我知道您对这个问题的看法。

我正在寻找这样的对象:

调查:{ 问题 1:[ 回答1, 回答 2], 问题2: [ 回答1, 答案2]

所以我目前在 php 中所做的是查询一个表中的所有调查问题,然后使用该对象循环查询每个问题并从另一个表中获取答案。如果有很多问题,这个设计会非常慢,有人可以提出替代方案吗?

最佳答案

您所描述的您已经在做的方式可能是最好的。您可以使用 JOIN 一次检索所有内容,例如:

SELECT *
FROM surveys s INNER JOIN questions q
ON s.id = q.survey_id
INNER JOIN answers a
ON q.id = a.question_id
WHERE s.id = $submitted_survey_id

您的结果将如下所示:

survey1,question1,answer1
survey1,question1,answer2
survey1,question1,answer3
survey1,question2,answer1
survey1,question2,answer2
survey1,question2,answer3
survey1,question3,answer1
survey1,question3,answer2
survey1,question3,answer3
...

但是您仍然需要编写逻辑来将这些结果分离成一个合理的数据结构,并且您要从数据库中检索大量重复数据。

SQL 通常不会生成分层结果集,您必须通过您的应用程序以某种方式生成这些结果集。

关于php - 使用子查询在 mysql 中构建嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28287241/

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