在mysql中选择子类别

时间:2011-09-03 10:23:57

标签: mysql sql

我有一个嵌套类别。这是结构。

CREATE TABLE 'category' (
  'id' INT,
  'title' VARCHAR(50),
  'category_id' INT,
)

关系很简单

(id,parent id)

main (1, NULL)
--parent (2, 1)
----child1 (3, 2)
----child2 (4, 2)
--foo (5, 1)
----baz (6, 5)
--bar (7, 1)

我想选择类别的孩子(MYSQL)

对于“父”类别,它是“child1”和“child2”

表示“主要”类别:

--parent (2, 1)
----child1 (3, 2)
----child2 (4, 2)
--foo (5, 1)
----baz (6, 5)
--bar (7, 1)

谢谢!

2 个答案:

答案 0 :(得分:0)

我认为使用此方案,您只能使用一个请求执行选择。但是这articleanswer可能有所帮助。

编辑:我发现article代码项目看起来像你的实现。

答案 1 :(得分:0)

如果你对级别数有限制就没问题,只需写下一个为每个级别选择子级的查询。它看起来像这样:

SELECT *....
    FROM category AS level1
    LEFT JOIN category AS level2 ON (c2.category_id = c1.id)
    LEFT JOIN category AS level3 ON (c3.category_id = c2.id)
    ...
WHERE c1.category_id = 0

如果您对孩子的数量没有限制:

  1. 编写一个mysql递归函数
  2. 获取所有mysql数据并使prog /下的父/子匹配。语言(即php)
  3. 保存某个地方(如果你有某个配置表)你拥有的级别数,并实现一个查询字符串生成器,为给定数量的级别创建查询字符串。在每次更新/插入时,您应该检查级别数是否已更改并存储