当前位置: 首页 > 知识库问答 >
问题:

如何在MySQL 5中从一个类别和子类别中选择所有文章

柯栋
2023-03-14

三个表保存文章信息:

类别表:

id, lft, rgt, title

lft:左值

rgt:正确的值

lft和rgt值为嵌套集,例如:

           root 
          (0,15)
          /    \
         /      \
       cat1    cat2
      (1,6)   (7, 14) 
       /|      / | \
      / |     /  |  \
     /  |    /   |   \
 cat3 cat4  cat5 cat6 cat7
(2,3) (4,5) (8,9)(10,11)(12,13)

文章表:

id, title

物品类别地图表:

article_id, category_id

如何在MySQL中从一个类别和子类别中选择所有文章?

我期望:

1、 单击cat2时,显示cat2和cat5以及cat6和cat7的所有项目。

2、 单击cat5时,仅显示cat5的所有项目。

3、点击root时,显示所有类别的所有文章(包括cat1、cat2、cat3、cat4、cat5、cat6、cat7...)。

共有1个答案

司徒捷
2023-03-14

我猜'lft'和'rgt'代表二叉树的“左”和“右”属性。

假设$category\u id是类别的id,Db::fetch方法从数据库中获取单行,Db::fetchAll方法获取与SQL查询匹配的所有行。

然后您可以获取类别的“左”和“右”,然后从类别及其子类别中获取文章。

if (! $cat = Db::fetch("SELECT lft, rgt
  FROM categories WHERE id = $category_id"))
{
  // handle error
}

$articles = Db::fetchAll("SELECT a.* FROM article a
  JOIN article_category_map m ON m.article_id = a.id
  JOIN categories c ON c.id = m.category_id
  WHERE c.id BETWEEN ${cat['lft']} AND {$cat['rgt']}");
 类似资料:
  • 我正在尝试建立自己的Webshop。 我有两个表-products和categories。结构是这样的: 当用户点击main category时,我选择要显示的产品如下所示: 问题是,我希望当用户单击主类别时,也可以选择其子类别中的所有产品。例如,类别是类别的子类别,在db中类似于 如您所见,我的当前选择将不会选择或,因为用户正在查看具有的类别...如何修改我的选择,使它将显示所有产品从主类别的子

  • 问题内容: 我想在选择 列表(下拉列表)中显示类别,子类别和子子类别,就像WordPress在其管理面板中显示的方式一样。 首先看一下我的数据库表(tb_categories)- 数据库表 我想要以下HTML格式的输出- 输出 两项“无”和“未分类”在代码中进行了硬编码。我 想知道如何 使用选择列表选项以层次结构顺序显示类别及其子类别。 我正在尝试使用自我连接的以下sql查询。这 是- And t

  • 我有两个表的项目和类别。类别表是自联接表。 项目表具有以下列ID、项目名称、类别ID Categories表包含以下列CATID、category\u name、parent\u ID 我需要选择在一个类别和这个主类别的子类别下列出但不起作用的项目。这里是mysql,它只返回sub。

  • 我目前有一个代码片段,其中对于每个类别,它将找到子类别: 将递归获取一个类别的子级: 目前,使用,只检索子类别的子类别,因此如果每个子类别都有自己的子类别,则不会将其保存到子类别中。 我如何显示子子类别给我们的子类别? 我想用我的代码做的是获取一个父级,获取它的子级,然后将这些子级中的每一个视为父级,递归地获取它的子级,但是我的JSON输出并没有反映这一点。只有父对象有子对象-子对象没有子对象(尽

  • 你好,我已经为joomla安装了jBusiness目录组件,我在tmpl/default.php文件中有一个名为mod_jbusinessdirectory的模块(这是一个商业列表搜索模块),我有选择代码:(见下文) 从这段代码中,我得到如下类别和子类别: > 主要类别1 子类别1子类别2子类别3 主要类别2 此处截图:类别和子类别截图 在助手中。php我有从数据库中获取类别和子类别的函数 最后,

  • 有一个类别,具有以下(重要)属性: 我正在尝试实现类别/子类别的概念。一个类别可以有零个或多个子类别。一个类别只能有一个父类别(可以为null)。对于顶级类别,parentCategory=null。 现在,我有一个所有类别的列表,