我有一个查询连接2表,如下所示:
SELECT * FROM Staff s INNER JOIN Account a on s.AccNo = a.AccNo WHERE a.Status = 'Active'
结果显示如下:
AccNo | Name | ID
------------------
1 | Alex | S01
2 | John | S02
获得员工ID后,我会写第二个查询以查找最大销售额,如下所示:
SELECT s.ProductID,Max(s.Amount) from Sales s WHERE StaffID = 'S01' GROUP BY s.ProductID
员工'S01'的最大销售额如下:
ProductID | Amount
------------------
Cloth | 2000
如何组合这两个查询并成为如下结果?感谢
AccNo | Name | ID | Amount
--------------------------
1 | Alex | S01 | 2000
2 | John | S02 | 5000
答案 0 :(得分:1)
您可以创建子查询并加入它:
SELECT a.AccNo, b.Name, b.ID, c.maximum
FROM transaction as a
INNER JOIN Account as b
ON a.AccNo = b.AccNo
LEFT JOIN (SELECT StaffID, Max(Amount) as maximum FROM Sales GROUP BY StaffID) as c
ON c.StaffID = b.ID
WHERE b.Status = 'Active'
请参阅SQLFiddle example(我试图猜测架构)
答案 1 :(得分:0)
所以你要做的就是加入staffId然后组的销售。
SELECT a.AccNo,a.Name,a.ID,Max(s.Amount)
FROM Transaction t
INNER JOIN Account a on t.AccNo = a.AccNo
INNER JOIN Sales s on s.staffId = a.ID
WHERE a.Status = 'Active'
GROUP BY a.AccNo,a.Name,a.ID
答案 2 :(得分:0)
您可以尝试这样的事情:
Select Account.*, Max(Sales.amount) from Sales
JOIN Account ON Sales.StaffID = Account.ID
where Account.status = 'Active'
group by Sales.ProductID, Account.AccNo, Account.Name, Account.ID
老实说,我不明白为什么你在查询中使用Transascation表,因为你不能使用它。
答案 3 :(得分:0)
我认为这应该有用
只需加入并检索与每位员工相关的最高金额
SELECT t.AccNo,t.Name,t.ID,s.ProductID,Max(s.Amount)FROM Transaction t
INNER JOIN帐户a ON t.AccNo = a.AccNo
INNER JOIN Sales s ON s.StaffID = a.ID
在哪里a.Status ='有效';
由于