Php mysql查询,从2个表中进行一些计算

Php mysql查询,从2个表中进行一些计算,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我有两张桌子 **Member table** mid | parentid | name 1 1 a 2 1 x 3 1 c 4 2 d 5 3 e 6 3 f 7 4 g 及 我需要一个查询来显示一个成员列表,并从两个表中他们是父母的人数最多的人中进行排序,因此答案将是 id |

我有两张桌子

**Member table**

mid | parentid | name
1           1      a
2           1      x
3           1      c
4           2      d
5           3      e
6           3      f
7           4      g

我需要一个查询来显示一个成员列表,并从两个表中他们是父母的人数最多的人中进行排序,因此答案将是

id | name  |rank
1      a     5
3      c     4
4      d     3
2      b     2
5      f     0
6      g     0
7      h     0

我认为使用
UNION ALL
GROUP BY
是解决这个问题的方法。这可能有效,但我还没有测试过

SELECT
    member.mid AS id,
    member.name AS name,
    COUNT(counter.x) AS rank
FROM 
    member,
    (
        SELECT parentid AS x FROM member
        UNION ALL
        SELECT mid AS x FROM contact
    ) AS counter
WHERE
    member.mid = counter.x
GROUP BY counter.x
SORT BY counter.x DESC

请展示您迄今为止尝试的内容-这不是“给我代码”社区…您的示例不可能正确。您的成员表中没有名称h(结果中也有),并且您的成员表中有一个x,但没有结果。那个么你们的联络表到底是做什么的呢?在您的结果描述中,您没有提到任何“联系人”。如果我们需要向会员展示其排名为零的情况,该怎么办?您可以使用。
SELECT
    member.mid AS id,
    member.name AS name,
    COUNT(counter.x) AS rank
FROM 
    member,
    (
        SELECT parentid AS x FROM member
        UNION ALL
        SELECT mid AS x FROM contact
    ) AS counter
WHERE
    member.mid = counter.x
GROUP BY counter.x
SORT BY counter.x DESC