MySQL查询嵌套/子?

时间:2012-04-02 12:09:07

标签: mysql

好的,这是我正在使用的数据:

        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也是。然而,这并不总是相同的,所以它确实需要是一个查询。

所以基本上我需要运行一个查询来从表中获取所有连接(嵌套)类别。我已经尝试了许多失败结果的方法,所以任何帮助都会很棒。

2 个答案:

答案 0 :(得分:0)

如果您使用的是PostgreSQL,则可以使用“WITH RECURSIVE”但MySQL不支持动态递归查询。您必须使用您的访问语言(例如PHP,Java) 在那里,您可以迭代记录集并对每个返回的子行执行查询,直到不再返回子行为止。

答案 1 :(得分:0)

正如TRD所说,有一些SQL的扩展支持递归搜索自连接(Oracle使用'CONNECT BY')但是这些不仅在MySQL中不可用,它们也不是最有效也不灵活的解决方案。 / p>

有一个google用于邻接列表模型 - 我做了并找到了this