首页 > 解决方案 > 从同一个表中选择父母和父母的孩子并按顺序排列

问题描述

我尝试选择所有父母和所有父母的孩子,然后将每个父母的孩子的计数(*)加入父母的行。

SELECT a.*,COUNT(b.*) FROM cat AS a
LEFT JOIN (SELECT * FROM cat AS b WHERE b.ana_cat=a.id)
ON b.ana_cat=a.id
WHERE a.ana_cat=0

但不起作用,因为我对 sql 知之甚少。我怎样才能得到这样的结果:

|id|cat_title|ana_cat|COUNT(*)|
-------------------------------
|1 |Cultures |   0   |   4    |
|4 |Haoussa  |   1   |   0    |
|9 |Zarma    |   1   |   0    |
|7 |Peuls    |   1   |   0    |
|8 |Toubou   |   1   |   0    |
|3 |Histoire |   0   |   2    |
|6 |Nigerien |   3   |   0    |
|2 |Africain |   3   |   0    |
|1 |Divers   |   0   |   0    |
|1 |Archive  |   0   |   0    |

标签: mysqlsql

解决方案


我认为相关子查询更适合您的问题:

SELECT c.*,
       (SELECT COUNT(*)
        FROM cat ca
        WHERE ca.ana_cat = c.id
       )
FROM cat c 
WHERE c.ana_cat = 0;

我不确定是否WHERE需要。


推荐阅读