类别子类别mysql查询

时间:2018-08-09 05:41:44

标签: php mysql multidimensional-array categories

我试图在MySQL中用计数公式创建一个类别/子类别分支,但没有成功。

我的产品存储在我的数据库中,如下所示:

product_id|parent category | child category | grandchild category |
    1     |       A        |        a       |         α           |
    2     |       B        |        b       |         β           |
    3     |       B        |        b       |         γ           |
    4     |       B        |        c       |         δ           |

以此类推...

我试图获得这样的输出:

array( 
[0] => ([parent category][0] => 'A', [child category][0] => 'a', [gchild cat][0] => 'α', [total][0]=> 1, [total][1] => 1, [total][3]=> 1),

[1] => ([parent category][0] => 'B', [child category][0] => 'b', [child category][1] => 'c' [gchild cat][1] => 'β', [gchild cat][2] => 'γ', [total][0]=> 3, [total][1] => 2, [total][2]=> 1, [total][3]=> 1, [total][4]=> 1, [total][5]=> 1, [total][6]=> 1)
)

在MySQL中使用以下代码:

SELECT parent_category, child_category, grandchild_category,
            ( 
                COUNT('parent_category')
            ) as total1,
            ( 
                COUNT('child_category')
            ) as total2,
            ( 
                COUNT('grandchild_category')
            ) as total3
            FROM table
            WHERE valid_product= '1'  
            GROUP BY parent_category, child_category, grandchild_category
            ORDER BY parent_category

但是,显然MySQL不会合并计数并为每个类别组合输出一个子数组。

我还尝试将以下格式用于输出:

array('title'=> 'B',
      'total' => 3,
      'child_category' => array(array('title' => 'b',
                                      'total' => 2,
                                      'grandchild_category' => array( 
                                                        array('title' => 'β',
                                                              'total' => 1
                                                              ),
                                                        array('title' => 'γ',
                                                              'total' => 1
                                                              )
                                                                     )
                                      ),
                                array('title' => 'c',
                                      'total' => 1,
                                      'grandchild_category' => array( 
                                                        array('title' => 'δ',
                                                              'total' => 1
                                                              )
                                                                     ),
                                     )
                               )
    )

但是又一次没有接近。 有人知道我会做什么吗?这样的输出是否有最佳格式?

1 个答案:

答案 0 :(得分:1)

这不是Category-Sub Category的正确架构。

id | category |  parent (foreign key to id)
 1 |   A      |   NULL
 2 |   B      |   NULL
 3 |   a      |    1
 4 |   α      |    3
 5 |   b      |    2
 6 |   β      |    5
 7 |   γ      |    5
 8 |   c      |   NULL
 9 |   δ      |    8

正确构建架构,因此您可以从全球提供的工具和解决方案中受益。