Я пытался создать ветку категории/подкатегории с формулами count в 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
)
),
)
)
)
но снова не приближаясь. Кто-нибудь знает, что я могу сделать? Есть ли лучший формат для таких результатов?
Это не правильная схема для 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
Правильно постройте свою схему, поэтому вы можете воспользоваться инструментами и решениями, предоставляемыми во всем мире.