查询选择父母和孩子

时间:2012-09-06 14:14:32

标签: mysql

我有一个类别表,我想为帖子提供类别

post_category(CAT_ID,cat_name,PARENT_ID,cat_count)

cat_id    cat_name       parent_id       cat_count
   1           C            NULL           300 
   2         Pointers        1             100
   3         Structures      1             200
   4          Java          NULL           700    
   5         Exceptions      5             200
   6         Threading       5             300
   7         Thread Priority 6             200

这里cat_id是主键,root elenemts的父id是null,而child parent id是任何有效的cat_id。 我想选择每个父母及其子细节。如下

      C
         Pointers
         Structures    

      Java
         Exceptions
         Threading 
             Thread priority 

2 个答案:

答案 0 :(得分:1)

不幸的是,MySQL不支持可变数量的JOIN,就像MS SQL(我认为Postgres?)那样。但是,如果您愿意重新评估架构,那么就此问题有一些好的想法,this presentation by Bill Karwin at Percona

中有几个不错的选择。

目前,您基本上有两种选择:

  1. 选择要查询的任意深度
  2. 选择每条记录并在应用程序层中进行聚合(ick!)

答案 1 :(得分:0)

在MS SQL中,我认为您需要使用Recursive Queries Using Common Table Expressions。 所以也许这可能有助于找到你在MySQL空间中寻找的东西。