php - mysql查询与2个表的一些计算

标签 php mysql sql mysqli

我有 2 张 table ,

**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

**contact table** 

cid   |    mid
1           1    
2           1     
3           3      
4           2      
5           3      
6           4      
7           4   

我需要一个查询来显示成员列表,并根据 2 个表中父级人数最多的人数进行排序,因此答案为

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 ALLGROUP 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

关于php - mysql查询与2个表的一些计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31253554/

相关文章:

创建新数据库和表时,PhpMyAdmin SQL 代码未显示

mysql - 将数组数据输入数据库表时遇到困难

php - Yii:在创建期间获取 Controller 操作中相关表的最后插入 ID

sql - 从特定列中查找小数位数

php - 插入前mysql数据库比较

php - 如何从 mySQL 中选择 256 位加盐和加密值

sql - 帮助数据库结构

sql - DD-MMM-YYYY 格式的日期,例如 29-JAN-2015

php - 数据库中的引号被回显为 Chrome 中的菱形问号

mysql插入错误,列名是 "key"