2015-03-13 49 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