2014-04-26 103 views
0

我已經在這裏連接了3個表。客戶訂購的顧客,訂單和項目。這些被命名爲:CustomersTbl,OrdersTbl,OrderedItemTbl。MySql:在連接的表中返回MAX值

我正在安排所有訂單的總價格,並顯示訂單名稱的客戶。

select * from productstbl; 
select * from ordereditemtbl; 
select * from orderstbl; 

select 
    ordereditemtbl.ItemID, 
    customerstbl.CustomerID, 
    customerstbl.FirstName, 
    orderstbl.OrderID, 
    orderstbl.OrderDate, 
    sum(ordereditemtbl.amount * productstbl.Price) as totalPrice 
from 
    ordereditemtbl 
     inner join 
    ProductsTbl ON ordereditemtbl.productID = productstbl.productID 
     inner join 
    orderstbl ON ordereditemtbl.orderID = ordereditemtbl.orderID 
     inner join 
    customerstbl ON customerstbl.customerID = orderstbl.customerID#'2' 
group by ordereditemTbl.OrderID 
order by totalPrice desc; 

現在我想單獨顯示最高TotalPrice的訂單。我怎樣才能獲得它的最大價值?有沒有辦法可能使用MAX()函數?

+2

'MAX by order(totalPrice)' – underscore

+0

Nope。可悲的是,我收到以下內容:'錯誤1247:引用totalPrice不支持'。我試着通過把totalPrice的值修正它:sum(ordereditemtbl.amount * productstbl.Price)。讓我錯誤1111:'無效的使用組功能'。 – Villager

+2

'...按totalRrice desc LIMIT 1'順序查看[docs](https://dev.mysql.com/doc/refman/5.0/en/select.html)。另外請注意,你有一行'orderstbl ON ordereditemtbl.orderID = ordereditemtbl.orderID'中的錯誤,我想你的意思是'orderstbl ON ordereditemtbl.orderID = erderstbl.orderID' – abl

回答

1

讓我們來看看。看看這是否可行:

SELECT * FROM 
(
select 
    ordereditemtbl.ItemID, 
    customerstbl.CustomerID, 
    customerstbl.FirstName, 
    orderstbl.OrderID, 
    orderstbl.OrderDate, 
    sum(ordereditemtbl.amount * productstbl.Price) as totalPrice, 
    @rownum AS row_number 
from 
    ordereditemtbl 
     inner join 
    ProductsTbl ON ordereditemtbl.productID = productstbl.productID 
     inner join 
    orderstbl ON ordereditemtbl.orderID = ordereditemtbl.orderID 
     inner join 
    customerstbl ON customerstbl.customerID = orderstbl.customerID#'2' 
     inner join 
    (SELECT @rownum := 0) dummy 
group by ordereditemTbl.OrderID 
ORDER BY totalPrice desc; 
) 
WHERE row_number=0 

這分配一個行號,並選擇第一行。

乾杯, 拉姆

+0

那麼我們錯過了每個表的別名,但是在添加後我得到了0行返回。 – Villager

+0

我不明白,我複製_your_查詢,我應該添加別名? –

+1

我真的是SQL初學者,我只是通過錯誤學習這些東西。 – Villager

0

如所建議的通過ABL,我已經添加了以下的代碼的末尾:

order by totalPrice desc LIMIT 1; 

顯示錶的第一行創建的,因爲它以降序真實所示值。 謝謝!