2015-06-19 48 views
0

我已經編寫了此sql語句以獲取人員ID,姓名和價格,例如,飛機票。在SQL中選擇MIN()

SELECT Person.PID, Person.Name, Preis 
FROM table.flug Flug 
INNER JOIN table.flughafen Flughafen ON zielflughafen = FHID 
INNER JOIN table.bucht Buchungen ON Flug.FID = Buchungen.FID 
INNER JOIN table.person Person ON Buchungen.PID = Person.PID 
WHERE Flug.FID = '10' ORDER BY Preis ASC; 

我的輸出是正確的,但它應該只是min(Preis)的行。

如果我相應地改變我的代碼,我得到一個錯誤......

SELECT Person.PID, Person.Name, min(Preis) 
FROM table.flug Flug ... 

作爲輸出我需要一個單行:PID,名稱和價格,而價格是分鐘(PREIS)。

+0

如果其所有行的「min(Preis)」,然後從選擇列表中刪除Person.PID,Person.Name,因爲它們沒有意義,或者如果您想要每個人有一個min(Preis)將「Person.PID,Person.Name」添加到「GROUP BY」。 – StuartLC

+0

您需要'GROUP BY Person.PID,Person.Name' –

+0

table.something只是數據庫中用戶名的佔位符... – knrd

回答

0

既然你已經整理你的線條,只需添加一個limit條款:

SELECT  Person.PID, Person.Name, Preis 
FROM  table.flug Flug 
INNER JOIN table.flughafen Flughafen ON zielflughafen = FHID 
INNER JOIN table.bucht Buchungen ON Flug.FID = Buchungen.FID 
INNER JOIN table.person Person ON Buchungen.PID = Person.PID 
WHERE  Flug.FID = '10' 
ORDER BY Preis ASC 
LIMIT  1 
1

您需要將結果按Person.PIDPerson.Name進行分組,以便在使用聚合函數min()的同一查詢中選擇這些字段。

0

如果查詢返回你要正確的結果,但不是你想要你得到更多的行,您可以在ORDER BY之後添加LIMIT 1子句。

如果你想只爲Person.PIDPerson.Name每一個獨特的組合,單行線,那麼ORDER BY子句前添加一個GROUP BY條款,並在SELECT列表中使用周圍PreisMIN()骨料。