我有2个表:类别和项目。
table: categories
id | parent_id | name
------------------------------
1 | 0 | drinks
2 | 1 | soft drinks
3 | 1 | beer
和
table: items
id | category_id | name
----------------------------
1 | 1 | water
2 | 2 | coca cola
3 | 2 | pepsi cola
4 | 3 | stella artois
我想做什么?我想计算该类别的类别或子类别中的所有项目。
因此,如果我选择类别"饮料"我想要计算类别中的所有项目"饮料"还有子类别中的所有项目"软饮料"和"啤酒"。
我认为它与左连接有关,但我无法弄明白。
提前致谢!
答案 0 :(得分:0)
我认为这会奏效。
select c.name,
(select count(*)
from items i
where i.category_id in (select c2.id
from category c2
where c.id in (c2.id, c2.parent_id)
) as total
from category c
这应该产生:
name | total
-------------------
drinks | 4
soft drinks | 2
beer | 1