Forum Webscript.Ru
Общие => Базы данных => Тема начата: wheelszeus от 25 Января 2005, 17:46:37
-
Здравствуйте уважаемые.
У меня есть таблица в MySQl:
create table price (
id int not null auto_increment,
add_date datetime,
name varchar(255) not null,
price_s varchar(25) not null,
primary key(id)
);
в столбце price_s вот такие значения 990005, 999005, 1000000.
Делаю запрос SELECT * FROM price ORDER BY price_s DESC;
Типа хочу упорядочить по столбцу price_s, но почему то получается так, что он сначало выводит 999005, а потом только 1000000, хотя последнее больше. Почему? Дело в запросе? Может как то иначе составить запрос? Или на пхп сделать какую нить функцию?
Заранее спасибо.
-
хранить надо данные в полях того типа, которые для них предназначены.
к пхп вопрос не имеет ни малейшего отношения.
-
в столбце price_s вот такие значения 990005, 999005, 1000000.
все цены желательно хранить в типе данных int.
P.S. существуют так же типы данных ориентированные именно по цены аля: (money, numeric(n, 2)) но эти типы надо использовать с осторожностью дабы небыло неточностей при сокращинии...
-
wheelszeus
Дело в запросе. Поле price_s у тебя строковое, а ты хочешь, чтобы оно сортировалось как число.
Либо измени тип поля price_s на INTEGER (или DOUBLE, что правильней, т.к. цена может содержать десятичную и сотую части), либо пошарься по ману MySQL - там должна быть функция привидения типов (как зовется - не помню).
-
commander:
существуют так же типы данных ориентированные именно по цены аля: money
в MySQL?
-
Croaker
аля money ... :)
-
commander
float называется
-
Судя по обсуждениям в сети, в mysql использовать float не рекомендуется для хранения денежных сумм.
Цены хранят в копейках - то есть используется тип INT
-
не int, а decimal