2017-01-21 9 views
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 

Отдела по 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