gpt4 book ai didi

php - 在 mySQL 中构造 php 数据

转载 作者:行者123 更新时间:2023-11-29 01:32:44 25 4
gpt4 key购买 nike

我有这样的数据模式:

cp
id te su
1 7 2
2 7 1
3 6 8

cl
id cp st
1 2 5
2 2 6
3 1 6

us
id na
.. ..
5 Joe
6 Mike
7 Tina
.. ..

我想用 foo(7) 运行一个 php 函数 foo($te) 来从 mySQL 输出这样的数据

[0]
su: 1
st_list:
[0]
id:6
na:Mike
[1]
su: 2
st_list:
[0]
id:5
na:Joe
[1]
id:6
na:Mike

我想知道如何最好地做到这一点。现在我可以使用 JOIN,但结果如下所示

[0]
su: 1
st_id:6
st_na:Mike
[1]
su: 2
st_id:5
st_na:Joe
[3]
su: 2
id:6
na:Mike

su:2 被重复...显然这在这个例子中不是问题,问题是在真实的事物中 su 代表了很多更多数据,我将通过“这个”(无论我选择什么答案)方法获得。

编辑:我希望你明白我在问什么......我知道你们中的很多人在 mySQL 和一般开发方面比我更了解,所以这就是为什么我要这么简单地问(我有 THS--- -> WANT THIS) 方式,因为我想如果我问得更具体一些,我最终会假设它应该运行的方式)。我想要一个有效的解决方案,因为这些数据正用于填充搜索结果。

谢谢!!!!!!!!!!!!

最佳答案

您需要自己遍历结果并以您想要的格式构建数组。 MySQL 无法以您想要的嵌套格式为您提供结果。这是一个粗略的草稿(未经测试):

$su = 0;
$st_list = array();
$nested = array();
foreach ($results as $row) {
if ($su != 0 && $row['su'] != $su) {
$nested[] = compact('su', 'st_list');
}

if ($su != $row['su']) {
$su = $row['su'];
$st_list = array();
}

$st_list[] = array(
'id' => $row['st_id'],
'na' => $row['st_na'],
);
}

$nested[] = compact('su', 'st_list');

编辑:通常最好使用单个 SQL 查询简单地获取您想要的所有结果。这几乎总是最有效的方法。但如果它对您来说真的很重要(并且这是您应用程序的性能关键部分),唯一可以确定的方法是对这两种方法进行基准测试。很大程度上取决于您的数据库布局、行数、SQL 索引等。

关于php - 在 mySQL 中构造 php 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6673541/

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