2017-04-19 5 views
0

ための最長飛行時間はFlightテーブルを考えると先の場所を見つける、航空券のデータベースを考える:は、各原点市

​​

私は、各都市のために、最長飛行を持つ先(複数可)を見つける必要があります

サブクエリで苦労しています。

私の試み:

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

これは、最も長い飛行時間を持つ目的地の都市のリストを生成します。

EDIT:メインクエリに 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