2017-03-06 64 views
1

我想查找具有最高價格的彩色打印機的Maker?我的輸出應該列出製造商,打印機型號和價格。我假設沒有兩個模型綁定最大價格。使用Max查找My SQL中的最大價格

我曾嘗試:select model,type,max(Price) from Printer where color="TRUE" group by model

但它返回兩個價格,而不只是一個。我也不知道如何加入表格以顯示最高價格的製造者。

這裏是我的架構:

Product (maker, model, type) 
Desktop (model, speed, ram, hd, price) 
Laptop (model, speed, ram, hd, screen, price) 
Printer (model, color, type, price) 

Products 
Maker Model Type 
A 1001 desktop 
A 1002 desktop 
A 1003 desktop 
B 1004 desktop 
B 1006 desktop 
B 3002 printer 
B 3004 printer 
C 1005 desktop 
C 1007 desktop 
D 1008 desktop 
D 1009 desktop 
D 1010 desktop 
D 2001 laptop 
D 2002 laptop 
D 2003 laptop 
D 3001 printer 
D 3003 printer 
E 2004 laptop 
E 2008 laptop 
F 2005 laptop 
G 2006 laptop 
G 2007 laptop 
H 3005 printer 
I 3006 printer 

Desktop 
Model Speed Ram HD Price 
1001 2.5 256 80 595 
1002 2.0 256 80 399 
1003 3.1 512 120 899 
1004 3.1 1024 120 999 
1005 3.1 256 100 999 
1006 4.5 512 180 1099 
1007 4.5 512 200 1399 
1008 4.0 512 100 1199 
1009 4.5 512 120 1299 
1010 3.0 256 60 495 

Laptop 
Model Speed Ram HD Screen price 
2001 1.8 256 30 12 799 
2002 2.2 128 20 14 1499 
2003 2.2 512 40 14 1699 
2004 2.5 256 40 12 1499 
2005 2.5 512 60 15 1799 
2006 2.3 256 40 15 999 
2007 3.0 1024 80 17 1899 
2008 2.3 256 30 14 1599 

Printer 
Model Color Type price 
3001 True InkJet 175 
3002 True InkJet 150 
3003 False Laser 295 
3004 False Laser 325 
3005 False inkjet 80 
3006 False Laser 259 
+0

我編輯重新納入樣本數據。如果沒有這個,恐怕你的問題可能會在稍後時間下降。 –

回答

2

在下面的查詢中,我使用子查詢來發現在Printer表中的最高價打印機。這與彩色印刷一起被用作WHERE條款的要求。

SELECT p1.Maker, 
     p2.model, 
     p2.type, 
     p2.price 
FROM Products p1 
INNER JOIN Printer p2 
    ON p1.model = p2.model 
WHERE p2.price = (SELECT MAX(price) FROM Printer WHERE color = "TRUE") 
+0

這個效果很好。任何方式,我們也可以顯示最大價格和模型?目前它只顯示製造商 – coder

+0

除了p2.color =「TRUE」之外,一切正常。當我在底部鍵入它時,它將返回一個空集,當應該有一個最大值爲175 – coder

+0

@coder對不起,檢查顏色應該在子查詢中找到最高價格,而不是外部'WHERE'子句。 –

1
Use GROUP BY Clause and MAX function 

SELECT PT1.model,PT1.type,PT1.price 
FROM Printer PT1 
JOIN 
(
    SELECT model, MAX(price) AS Price 
    FROM Printer 
    GROUP BY model 
) A ON PT1.model = A.model AND PT1.price = A.Price 
0

要返回一個單一價格,你可以使用LIMIT

select model, type, max(Price) from Printer where color="TRUE" group by model limit 1.