maz*_*lix 2 php mysql activerecord codeigniter
我有一个这样的数据模式:
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
.. ..
Run Code Online (Sandbox Code Playgroud)
我想运行一个PHP函数foo($te)与foo(7)像这样的输出数据从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
Run Code Online (Sandbox Code Playgroud)
我想知道如何最好地做到这一点.现在我可以使用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
Run Code Online (Sandbox Code Playgroud)
该su:2重复......很明显,是不是在这个例子中的一个问题,问题是,在真实的东西su代表了很多数据,我会通过"本"(我选择的任何答案)方法会得到.
编辑: 我希望你明白我在问什么...我知道你们中很多人在我的SQL和开发方面比我更了解,所以这就是为什么我要求这么简单(我有这个 - --->想要这个)方式,因为我想如果我更具体地问我最终会对它应该运行的方式做出假设).我想要一个有效的解决方案,因为这些数据被用于填充搜索结果.
谢谢!!!!!!!!!!
您需要自己循环结果并以您想要的格式构建数组.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');
Run Code Online (Sandbox Code Playgroud)
编辑:通常最好只使用单个SQL查询获取所需的所有结果.这几乎总是最有效的方法.但是如果它对你真的很重要(这是你的应用程序中性能关键部分),那么唯一可以确定的方法就是对这两种方法进行基准测试.很大程度上取决于您的数据库布局,行数,SQL索引等.
| 归档时间: |
|
| 查看次数: |
378 次 |
| 最近记录: |