簡體   English   中英

如何將兩個SQL查詢合而為一

[英]How to combine two SQL queries in one

我有表用戶參與者聊天 我需要在特定的聊天中吸引所有用戶,並通過聊天名稱吸引該用戶的聊天數量。 例如當前表:

  user      chat          participant
id|name   id|name       user_id|chat_id
1|Mike    1|School            1|1
2|John    2|Football          2|1
3|Sara    3|Gym               1|2
                              3|3

並通過關鍵字“學校”我想得到這個

Mike|2
John|1

我有兩個查詢來獲取結果的第一列和第二列,但不知道如何組合它:

SELECT user.name FROM user 
JOIN participant ON (user.id = participant.user_id) 
JOIN chat ON (participant.chat_id = chat.id) WHERE chat.name = 'School';

那給我

Mike
John

SELECT user.name, COUNT(*) FROM user 
JOIN participant ON (user.id = participant.user_id) GROUP BY user.name;

退貨

John|1
Mike|2
Sara|1

那么如何結合呢?

使用子查詢和聯接:

            select u.name,count(p.chat_id) as 'Count' from user u
            inner join participant p on p.user_id = u.id
            where 
            p.user_id  in ( select user_id from participant pp inner join chat cc on cc.id = pp.chat_id  where 
            cc.name = 'School' )    
            group by u.name
            order by Count desc

輸出:

在此處輸入圖片說明

嘗試這個

SELECT p1.name, COUNT(p.user_id) totUser
FROM participant p 
INNER JOIN (select u.id, u.name FROM participant p 
    inner JOIN chat c ON c.id = p.[chat_id]
    INNER JOIN user u ON u.id = p.user_id
    AND c.name = 'School') p1 ON p1.id = p.user_id
GROUP BY p1.name

暫無
暫無

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

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