2017-04-19 21 views
0

鑑於Flight表:由於航班的數據庫,找到最長飛行時間的目的地每個起點城市

​​

我需要找到,每個城市,目的地(S)與最長飛行時間

我很難與子查詢。

我嘗試:

SELECT DISTINCT origin_city, dest_city, MAX(actual_time) 
GROUP BY origin_city 

但我知道這是錯誤的。任何指導表示讚賞

+0

您的嘗試對於SQLite 3.7.11或更高版本(DISTINCT是多餘的)是正確的。但是對於什麼數據庫你真的想要答案? –

回答

-1
$sql = "SELECT MAX(actual_time) FROM FLIGHTS WHERE origin_city=xxxxx"; 
$result = $conn->query($sql); 


while($row = $result->fetch_assoc()) { 
    echo $row["dest_city"]; 
} 

將上面的代碼包裝在一個循環中,因爲你需要每個起源城市的目的地城市。

+0

這並不能提供航班時間最長的目的地城市。 –

+0

感謝您的迴應,但我確定這不是我們在課堂上學習的SQLite。這個解決方案應該用查詢和子查詢來完成。不爲循環 – dev74

0

這將產生一個起源城市的列表,目的地城市的航班時間最長。

編輯:新增GROUP BY主查詢,ORDER BY /限制子查詢消除重複origin_cities。

SELECT 
    f.`origin_city`, 
    f.`origin_state`, 
    f.`dest_city`, 
    f.`desc_state`, 
    f.`actual_time` 
FROM (
    SELECT 
     `origin_city`, 
     `origin_state`, 
     max(`actual_time`) as `max_time` 
    FROM `Flights` 
    GROUP BY `origin_city`,`origin_state` 
    ORDER BY `max_time` DESC) a 
JOIN `Flights` f 
ON f.`origin_city` = a.`origin_city` 
    AND f.`origin_state` = a.`origin_state` 
    AND f.`actual_time` = a.`max_time` 
GROUP BY f.`origin_city`,f.`origin_state` 
+0

謝謝。你知道我如何刪除同一來源/目的地城市對的重複項嗎? – dev74

+0

請參閱編輯答案。 –

+0

所以我使用Azure和LIMIT不起作用。你知道如何用TOP替換這個聲明嗎? – dev74