gpt4 book ai didi

php - 将循环查询简化为一个查询

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

我有一张表格,其中列出了不同级别的类别。我正在使用列 category_idcategory_titlecategory_levelcategory_parent_id

以下代码是我的搜索脚本的一部分。对于搜索中的给定类别,我希望获得不仅属于所选类别的结果,而且还希望获得属于该类别的所有子类别(以及这些子类别等)的结果。我通过遍历类别的子项然后遍历子项的子项来解决这个问题。

是否可以将其简化为执行一个查询?我想获得一个由逗号分隔的所有子类别的字符串,以便我可以在 WHERE IN 条件下使用它。

$categories = $this->input->get('category_id');
$subquery = $this->db->where('parent_id',$categories)->get('categories');
$subcats = $subquery->result();
foreach($subcats as $cat) {
$categories .= ','.$cat->category_id;
$subsubquery = $this->db->where('parent_id',$cat->category_id)->get('categories');
foreach($subsubquery->result() as $cat) {
$categories .= ','.$cat->category_id;
}
}

输出应该类似于 2, 15, 45, 15, 41, 32

顺便说一句,我正在使用事件记录查询(在 CodeIgniter 中),以防语法让您感到困惑。我将在表中最多存储大约 50 个类别和最多 3 个级别。

最佳答案

如果您希望能够运行一个查询并获得所有结果,您可能需要考虑将表结构更改为如下所示:

http://www.sitepoint.com/hierarchical-data-database-2/

添加或删除行时有点复杂,但会使您的搜索速度非常快。

关于php - 将循环查询简化为一个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7286321/

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