2015-03-13 64 views
0

我需要显示保存的每个客户的最后一个订单号(访问与VB.NET)查询:获取MAX()

例子:

表:客户

ID_CUST | CUSTOMER 
100 | JOHN 
101 | MARY 

TABLE:ORDERS

ID_ORDER | NOTES | TOTAL | ID_CUST 
1 | LOREM IPSUM | 100€ | 100 
2 | PENDING | 300€ | 100 
3 | BLA BLA | 400€ | 101 

如果我执行此查询:

Select CUSTOMERS.ID_CUST, CUSTOMERS.CUSTOMER, MAX(ORDERS.ID_ORDER) 
FROM CUSTOMERS INNER JOIN ORDERS ON CUSTOMERS.ID_CUST=ORDERS.ID_CUST 
GROUP BY CUSTOMERS.ID_CUST, CUSTOMERS.CUSTOMER 

工作正常。结果:

100 | JOHN | 2 
101 | MARY | 3 

问题是我还需要显示“注释”和“总计”字段。然后,如果我运行此:

Select CUSTOMERS.ID_CUST, CUSTOMERS.CUSTOMER, MAX(ORDERS.ID_ORDER), ORDERS.TOTAL, ORDERS.NOTES 
FROM CUSTOMERS INNER JOIN ORDERS ON CUSTOMERS.ID_CUST=ORDERS.ID_CUST 
GROUP BY CUSTOMERS.ID_CUST, CUSTOMERS.CUSTOMER,ORDERS.TOTAL, ORDERS.NOTES 

结果不是我所需要的[错误]:

100 | JOHN | 1 | LOREM IPSUM | 100€ 
100 | JOHN | 2 | PENDING | 300€ | 100 
101 | MARY | 3 | BLA BLA | 400€ 

,因为如果我不包括这两个领域,“笔记”,“全面”,在的“GROUP BY”,查询将返回错误:不包括指定的表达式作为集合功能的一部分

UPDATE 1:

我从vb.net程序运行此查询

+0

没有为一个向导这个。 – Fionnuala 2015-03-13 13:09:18

+1

那么在结果中你想要什么'Notes'? – PaulFrancis 2015-03-13 13:10:02

+0

PaulFrancis:因为我的客户想要它那样 – kontable 2015-03-13 15:11:06

回答

0

保存您的第一个查询(qryCustLastOrderID)。然后创建一个新的查询(这是空码)SELECT qryCustLastOrderID。*,ORDERS.Notes FROM qryCustLastOrderID INNER JOIN ORDERS ON qryCustLastOrderID.MaxOfID_Order = ORDERS.ID_Order。

如果你不希望保存一个单独的查询,这里是一个替代(再一次空气代码): SELECT Q1 *,ORDERS.Notes FROM (选择CUSTOMERS.ID_CUST,CUSTOMERS.CUSTOMER,MAX(订单.ID_ORDER)作为MaxOfID_Order FROM CUSTOMERS INNER JOIN ORDERS ON CUSTOMERS.ID_CUST = ORDERS.ID_CUST GROUP BY CUSTOMERS.ID_CUST,CUSTOMERS.CUSTOMER)Q1 INNER JOIN订单ON Q1.MaxOfID_Order = ORDERS.ID_Order

+0

但我从VB.NET应用程序 – kontable 2015-03-13 15:11:47

+0

启动此查询它仍然会工作,第二个查询将运行首先。 – thetimmer 2015-03-13 15:19:18