сортирую по цене, смотри:
SELECT Price FROM re2_listings ORDER BY Price asc
Результат:
1.200.000,00 1.500.000,00 200,00 3.000,00
... но правильный путь:
200,00 3.000,00 1.200.000,00 1.500.000,00
Понял? Как это сделать?
Очевидно, что VARCHAR - не лучший тип данных для хранения числовых сумм. Если вы должны использовать его, вам нужно CAST столбец цен к соответствующему числовому типу в частях вашего оператора SELECT и ORDER BY или создать представление, содержащее CAST и SELECT из представления.
Тип данных для CAST и синтаксис для CASTing зависят от продукта.
MySQL или SQL Server поддерживает:
SELECT t.price FROM (SELECT r.price CAST(r.price AS DECIMAL(15,2)) 'dprice' FROM RE2_LISTING r) t ORDER BY t.dprice
Я привел столбец varchar к соответствующему типу данных и использовал псевдоним dprice, чтобы использовать его для сортировки. Если вы сортируете по возрастанию, вам не нужно указывать ASC, если вы не хотите - это значение по умолчанию.
dprice
ASC
Во-первых, это помогает узнать ваш вариант SQL, чтобы ответить на ваш вопрос.
Если у вас все еще есть возможность управлять схемой, вам гораздо лучше использовать числовой тип данных (например, int или float) для столбца и форматировать его как цену, когда он отображается.
$q1 = "select Price from re2_listings order by CAST(Price AS Float) asc";