好的,这是我正在处理的数据:
category_child_id category_parent_id
1 0
2 0
3 1
4 1
5 3
6 3
7 4
8 0
9 8
10 8
11 0
12 11
13 11
14 0
15 14
16 14
17 14
18 0
19 18
20 18
21 18
0 19
它基本上是有子类别的类别,等等。
如果我
SELECT category_child_id FROM category_xref WHERE category_parent_id = 1
它返回3&4,这是正确的。然而,没有产品在这个类别中,只有在下面的类别,所以我实际上想要的结果是5&6以及。然而,这并不总是相同的,所以它需要是一个查询。
因此,基本上我需要运行一个查询来从表中获取所有连接的(嵌套的)类别。我已经尝试了很多方法,但都失败了,所以任何帮助都是很好的。
发布于 2012-04-02 20:21:46
如果你使用的是PostgreSQL,你可以使用"WITH RECURSIVE“,但是MySQL不支持动态的递归查询。您必须使用您的访问语言(例如PHP、Java)来完成此任务。
在那里,您可以迭代记录集并对每个返回的子行执行查询,直到不再返回子行。
发布于 2012-04-02 20:55:17
正如TRD所说,有一些SQL扩展支持自连接的递归搜索(Oracle使用'CONNECT BY'),然而这些扩展不仅在MySQL中不可用,而且也不是最有效或最灵活的解决方案。
我用谷歌搜索邻接表模型--我找到了this。
https://stackoverflow.com/questions/9976138
复制相似问题