2016-01-27 57 views
0

我有航班的一張桌子和努力,以確定最後的市各飛行#截至降落。獲取上次查詢

不正確的查詢是:

SELECT DISTINCT `flight_nmbr`, COUNT(record_id) AS Flights, 
MIN(`depart_date_time`) AS `first_flight`, 
MAX(`depart_date_time`) AS `last_flight`, 
MAX(`location`) AS `current_location` 
FROM history 
GROUP BY `flight_nmbr` 
HAVING records > 1 
ORDER BY MAX(`depart_date_time`) DESC; 

本聲明將表明最後一個航班(飛機當前所在)是溫斯頓 - 塞勒姆,或曾斯維爾(這是MAX城市名稱)。

我最需要的位置,最後/最近一次飛行,這是亞特蘭大和休斯頓(從MAX(depart_date_time)的位置)。

的Microsoft Access有一個最後函數來查詢,但我們從Access遷移走,使用MySQL和PHP。

有人能幫助調整這個查詢?

非常感謝!

+0

因此,這是有問題?市列? – Mihai

+0

MAX將無法在「文本」值的工作(如你想要的工作),你需要建立這個特定的查詢...(獲得位置,其中飛行ID是一個具有最大depart_date_time) – Julo0sS

+0

如果你喜歡,可以考慮遵循以下簡單的兩步操作步驟:1.如果您尚未這樣做,請提供適當的CREATE和INSERT語句(和/或sqlfiddle),以便我們可以更輕鬆地複製該問題。 2.如果您尚未這樣做,請提供與步驟1中提供的信息相符的所需結果集。 – Strawberry

回答

2

您可以使用子串與GROUP_CONCAT招

SELECT DISTINCT flight_nmbr, 
COUNT(record_id) AS Flights, 
MIN(depart_date_time) AS first_flight, 
MAX(depart_date_time) AS last_flight, 
SUBSTRING_INDEX(GROUP_CONCAT(location ORDER BY depart_date_time DESC),',',1) AS current_location 
FROM history 
GROUP BY flight_nmbr 
HAVING records > 1 
ORDER BY MAX(depart_date_time) DESC; 
+0

已解決!我不熟悉SUBSTRING_INDEX - 或 - GROUP_CONCAT,但會研究這些功能。謝謝Mihai –