2017-01-21 2 views
1

私は現在、日付、名前などの異なるエントリを持つデータベースを使用していますが、時間は "範囲"の1つの列も使用しています。これは、基本的に、このセルに「10」のような明確な数字があることを意味しますが、「10-15」や「5-10」のような値もあります。 ここで私がしたいのは、平均値((最低値+最高値)/ 2)で並べ替えることです。したがって、上記の3つの値の場合は、 5-10 10-15 何らかの方法でこれをSQLステートメントに埋め込むことができるのだろうかと思います。 それが不可能な場合は、別の方法で実装する最も簡単な方法を知りたいと思います。SQL "範囲"で並べ替える方法

今、私は$ SQL_statementをいくつかの条件でまとめ、すべてを$ resultsetに入れて、それを "while"とともに使用します。ここではいくつかのスニペットは、次のとおりです。

$resultset=mysql_query($SQL_statement); 
while ($currententry=mysql_fetch_array($resultset)) 
{ 
    echo $currententry['Platform']; 
    echo $currententry['PlaytimeInH']."h"; 
} 

答えて

0

順に句を使用すると、substring_index()演算でこれを行うことができるときあなたはケースとの選択を使用することができます。

order by (substring_index(col, '-', 1) + 0 + 
      substring_index(col, '-', -1) + 0 
     )/2 

部門あなたの質問に平均を指定します。

colにハイフンが含まれていなくても、上記は機能します。

+0

ありがとう!魅力的な作品! – Kordanor

0

select col1, col2, cole 
from your_table 
order by case 
     when your_column = '5-10' then 1 
     when your_column = '10-15' then 2 
     when your_column = '15-20' then 3 
     else 4 
     end 
+0

ありがとうございました。しかし、このデータベースには600種類以上のエントリがあり、あらゆる種類のバリエーションがあります。そのようにすれば、データベースの目的が完全に手動で発注されるので、データベースの目的を覆すことになります。 – Kordanor

関連する問題