将值从查询1传递到查询2

时间:2013-09-05 06:33:59

标签: mysql sql sql-server

我有一个查询连接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

4 个答案:

答案 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 ='有效';

由于

相关问题