2014-04-26 104 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; 

显示表的第一行创建的,因为它以降序真实所示值。 谢谢!