0

結果を並べ替えようとしていますが、order by ステートメントが無視されています...理由はわかりますが、修正方法はわかりません。これが私のコードです:

SELECT 
    result.station_id as 'Station ID',
    result.date as 'Date',
    result.id as 'ID',
    COALESCE(sum(if(result.parameter = '1', result.result, NULL)),'-') as 'RESULT A)',
    COALESCE(sum(if(result.parameter = '2', result.result, NULL)),'-') as 'RESULT B)',
FROM (  
    SELECT
        event.station_id,
        event.date,
        event.id,
        e_result.result
    FROM event
    Inner Join e_result ON e_result.id = event.id
    WHERE 
         (event.station_id =  '0001') AND `devent`.`date` >= '1999-02-08' AND `event`.`date` <= '2011-12-20') as result 
GROUP BY by result.id
ORDER BY 
     result.station_id ASC, 
     result.date DESC

正しくグループ化されていますが、後で結果を並べ替えていません...グループ化を並べ替えているようです。グループ化が終了した後、結果セット全体 (各グループ化ではなく) をソートする必要があります

出力例:

Station Date        ID          Result A    Result B
20      7/6/2009    g003        -           3
12      2/8/1999    g000        19.2        -
12      2/8/1999    g001        19.9        -
12      2/14/1999   g002        19.1        -
17      4/9/2003    i001        22.2        4

する必要があります

Station Date        ID          Result A    Result B
12      2/14/1999   g002        19.1        -
12      2/8/1999    g000        19.2        -
12      2/8/1999    g001        19.9        -
17      4/9/2003    i001        22.2        4
20      7/6/2009    g003        -           3

テーブル:

e_result   id, parameter, result
     g002, 1, 19.1
     g000, 1, 19.2
     g001, 1, 19.9
     i001, 1, 22.2
     i001, 2, 4
     g003, 2, 3

event      station_id, date, id
     20, 7/16/2009, g003
     12, 2/8/1999, g000
     12, 2/8/1999, g001
     12, 2/14/1999, g002
     17, 4/9/2003, i001
4

3 に答える 3

1

さて、あなたがどのように機能するかを理解していないことがわかりますgroup by。グループ化すると、個々のレコードが失われ、バッグにまとめられます。これにより、 、 などの集計関数を実行できますcountsumしたがって、経験則として、集計されていないフィールドを選択している場合は、group by節に入れる必要があります。

あなたの例では、集計関数を使用していないので、なぜグループ化するのですか?

さらに、データ型に問題があります。クエリstation_idでは文字列のようですが、出力では整数のようです。日付では逆のことが起こります。おそらく、これらのフィールドに適切なデータ型ではなく文字フィールドを使用していて、それらを文字フィールドとして並べ替えていると思います。

于 2012-04-12T16:07:42.433 に答える
0

クエリは問題ありませんが、最後に最後の関数が 1 つありません。

GROUP BY
 result.station_id
于 2012-04-12T15:10:42.823 に答える