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