2017-09-24 9 views
0

ビークルIDと日付を入力すると、ビークルIDと日付の両方を使用してレコードをソートする必要がありますが、vehicleIDのみでソートされるわけではありません。どうすればこれを達成できますか?日付を含めて並べ替えることはできません

if ($vid != null && $datepicker != null) { 
    $conn = new Db(); 
    $sql = "SELECT * FROM trip_details where vehicle_id = '".$vid."' AND date_t = '".$datepicker."'"; 
    $result = $conn->query($sql); 
    while ($row = $result->fetch_assoc()) { 
     echo "<tr>"; 
     echo "<td> ". $row["trip_id"]."</td>"; 
     echo "<td> ". $row["vehicle_id"]."</td>"; 
     echo "<td> ". $row["total_trip_km"]."</td>"; 
     echo "<td> ". $row["predict_fual"]."</td>"; 
     echo "<td> ". $row["date_t"]."</td>"; 
     // echo "<td><input type=\"submit\" value=\"view map\"></td>"; 
     echo "</tr>"; 
    } 
} 
+8

あなたはSQLクエリのORDER BY句を任意の順序を持​​っていないを考えると、あなたはまったくソート順を定義していないので、いずれかで返されるレコードの保証はありません特定の順序...特定の並べ替え順序が必要な場合は、ORDER BY句を指定する必要があります –

+1

[MySQLで複数のフィールドを並べ替える](https://stackoverflow.com/questions/4416880/sorting-multiple-fields)の可能な複製-in-mysql) – ishegg

+2

あなたが私たちに示すコードは、特定のvehicleIDとDateを持つすべての行を選択するので、2つのフィールドでソートすることはできません。 –

答えて

1

SQLは、明示的order by句を追加しない限り、注文結果の保証はselectクエリから返されていないになり、あなたがvehicle_idによってソート返されたレコードを観察するという事実は偶然です。望ましい結果を得るために定義する必要があることで

ORDER BY vehicle_id, date_t 
0

注文:あなたは、クエリにorder by句を追加する必要があります。

例えば

ご注文のAC(昇順)またはDESC(降順)でORDER BY句の列の名前を定義する必要があり、列で、あなたにデータをソートするために、この

$sql="SELECT * FROM trip_details where 
vehicle_id='".$vid."' AND date_t='".$datepicker."' 
ORDER BY vehicle_id DESC,date_t DESC"; 
+0

答え日にソートされていますが、車両IDはソートされていません。 –

+0

@RoshanSenanayakeは今お試しください。両方の列にソート順を追加しました。 –

0

を試してみてくださいDESCのCOLUMN1によって

ため、ASCのCOLUMN2

関連する問題