|
|
|
| Всем привет. Есть небольшое голосование по технологии "+" и "-", а в итоге выводится конечный результат с учётом знака + или -. Соответственно, в БД записываются значения "+338", "-488" и т.д.
Как вывести значения в порядке уменьшения, учитывая эти + и - ? Может как-то поля настроить? | |
|
|
|
|
|
|
|
для: Diplex
(16.07.2010 в 14:00)
| |
ORDER BY `поле со значением` DESC
|
| |
|
|
|
|
|
|
|
для: Diplex
(16.07.2010 в 14:00)
| | а + то зачем?
Без плюса число положительным не окажется чтоли? | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2010 в 14:46)
| | >а + то зачем?
для усиления положительности. :) | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2010 в 14:46)
| | to sms-send:
Я пробовал такой запрос:
mysql_query("SELECT * FROM `lyr` ORDER BY `balall` DESC LIMIT 20");
|
Сортирует неправильно, с минусом лезут вверх, всё в разнобой.
to Trianon and sim5:
У меня просто в итоге значение из поля выводится на страницу, и нужно выводить с + или минусом, и делать доп проверку и подставлять "+" глупо, если удобно хранить конечный результат в бд.
Почему неправильно сортирует? | |
|
|
|
|
|
|
|
для: Diplex
(16.07.2010 в 14:53)
| | Возникло подозрения, что `balall` какого то совсем не такого типа.
INTEGER или другой целочисленный тип должен подойти. А форматированием вывода должен заниматься клиент (это насчёт плюса).
> и делать доп проверку и подставлять "+" глупо
Нееет, глупо это как сейчас. | |
|
|
|
|
|
|
|
для: Diplex
(16.07.2010 в 14:53)
| | тип переменной должен быть числовым.
БД никогда не нацеливают на хранение именно конечных результатов.
Конечной предобработкой обычно занимается уровень приложения.
Хотя можно и в SELECT эту условную операцию загнать.
Но хранить плюс, равно как и хранить число в виде текста - ересь мерзкая. | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2010 в 15:00)
| | Сделал тип поля TINYINT, выводит правильно, но убивает "+", т.е. число выводится без плюса, но если отрицательное число, то минус выводится.
Если такой тип подходит, то как лучше всего проверить положительность числа? Резать первый символ, если это минус, то ничего не делать, если что-то другое, то подставлять плюс? Или есть какая-то спец функция для подставки плюса к положительному числу? | |
|
|
|
|
|
|
|
для: Diplex
(16.07.2010 в 15:04)
| |
<?php
$n = sprintf('%+d', $n);
|
<?php
if($n<0)
$n = '+'.$n;
|
| |
|
|
|
|
|
|
|
для: sms-send
(16.07.2010 в 15:10)
| | Спасибо! А нет информации, какой метод быстрее, а то у меня нет возможности проверить на сервере, т.к. он нагружен пользователями... :) | |
|
|
|
|
|
|
|
для: Diplex
(16.07.2010 в 15:12)
| | На фоне выполнения запроса к базе пользователи разницы не заметят. | |
|
|
|
|
|
|
|
для: sms-send
(16.07.2010 в 15:14)
| | Ок, понял, спс! | |
|
|
|
|
|
|
|
для: Diplex
(16.07.2010 в 15:16)
| | Кстати, sprintf перед 0 выведет "+", если не нужен, то использовать второй вариант. | |
|
|
|
|
|
|
|
для: sms-send
(16.07.2010 в 15:19)
| | Спасибо, что написали, а то начал использовать первый вариант уже)) | |
|
|
|
|
|
|
|
для: Diplex
(16.07.2010 в 15:25)
| | ... а во втором варианте я очепятался =(
<?php
if($n>0)
$n = '+'.$n;
|
| |
|
|
|
|
|
|
|
для: sms-send
(16.07.2010 в 15:28)
| | Это я уже заметил)) Спасибо за заботу)) | |
|
|
|
|
|
|
|
для: Diplex
(16.07.2010 в 15:12)
| | >Спасибо! А нет информации, какой метод быстрее, а то у меня нет возможности проверить на сервере, т.к. он нагружен пользователями... :)
Обычно в такой ситуации проверку делают на собственной машине. | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2010 в 21:48)
| | У меня собственная машина работает как сервер, который доступен из интернета и на который заходят посетители. Поэтому все измерения будут неверны... | |
|
|
|
|
|
|
|
для: Diplex
(17.07.2010 в 02:36)
| | кто ж Вам мешает сделать по-людски... | |
|
|
|