[英]Join two tables in MySQL, returning just one row from the second table
[英]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
我基本上想要做的就是獲取成員的company
、 email
和domain
。 如果成員的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.