簡體   English   中英

如何連接兩個 MySQL 表並檢查第二個表中的行狀態

[英]How to join two MySQL tables and check row status in second table

我正在查詢一張表,還需要從另一個表中提取詳細信息。

這是payments表中的列

id, member, kwid, keyword, engine, start, ranking, price, month, year, sorter, status

這是我用來從payments表中提取的原始查詢:

SELECT member, SUM(price) AS revenue FROM payments WHERE status = 'Paid' GROUP BY member ORDER BY revenue DESC

該查詢按我的意願工作。 它獲取狀態設置為已付款並按成員 ID 分組的付款列表。

但是,我還想使用該成員 ID ( member ) 從members表中獲取該成員的詳細信息。

這是members表中的列:

id, company, domain, email, status

我試過使用 INNER JOIN 但似乎無法讓它工作。

這是查詢:

SELECT member, SUM(price) AS revenue 
FROM payments t1 
WHERE status = 'Paid' 
GROUP BY member 
    INNER JOIN members t2 ON t1.member = t2.id 
ORDER BY revenue DESC

我基本上想要做的就是獲取成員的companyemaildomain 如果成員的status (在members表中)未設置為Active ,我不想顯示它。

如果您想要所有成員和大量列,我建議使用相關子查詢:

SELECT m.*,
       (SELECT SUM(p.price)
        FROM payments p
        WHERE p.member = m.id AND p.status = 'Paid' 
       ) as revenue
FROM members m
ORDER BY revenue DESC;

如果您想要members的詳細信息並匯總payments列,則從members開始加入,如下所示:

SELECT m.id, m.company, m.email, m.domain, 
  SUM(price) AS revenue 
FROM members AS m INNER JOIN payments AS p
ON p.member = m.id  
WHERE m.status = 'Active' AND p.status = 'Paid'
GROUP BY m.id, m.company, m.email, m.domain
ORDER BY revenue DESC

我認為您在正確的軌道上,您的查詢中唯一缺少的想法是擴展“選擇”中的項目以包含您想要從“成員”表中獲取的詳細信息。

試試這個,看看它是怎么回事:

SELECT member, company, email, domain, SUM(price) AS revenue 
FROM payments t1 
WHERE status = 'Paid' 
GROUP BY member 
     INNER JOIN members t2 ON t1.member = t2.id 
ORDER BY revenue DESC

暫無
暫無

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

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