簡體   English   中英

從2個表進行一些計算的mysql查詢

[英]mysql query with some calculation from 2 tables

我有2張桌子,

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM