Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Спасайте. MySQL и ORDER BY

369
03 марта 2011 года
Kesano
451 / / 09.10.2007
В общем, такая плюшка...

Есть в таблице поле, допустим price (цена)...
Оно может быть пустым, может быть заполненным целым числом...

Проблема возникает при выборке и update...
Если поле INT - сортирует правильно (1,3,14,25), но при update'е пишет в поле 0, т.е. пустым оставить нельзя...
Если поле VARCHAR или TEXT, то при update туда можно корректно записать "ничего" (сделать пустым), но при выборке сортирует значения по алфавиту, т.е. тупо.... (1,14,25,3)...

Вопрос, как *пииии*.... обмануть MySQL, и:
1. Сделать возможным запись пустого значения
2. Оставить нормальную сортировку чисел ORDER BY ... ASC|DESC

Понятное дело, что если это число (int), то это ЧИСЛО, а если строка (TEXT), то строка...
Гугление и чтение документации на это указывают... нет, чтоб сделать что-то вроде ORDER BY field AS NUMERIC

Я догадываюсь, что требую почти невозможного... а вдруг...
Спасибо.
244
03 марта 2011 года
UAS
2.0K / / 19.07.2006
Что мешает сделать поле price как FLOAT DEFAULT NULL? Ну или если целые числа, то INT DEFAULT NULL?
Не совсем пойму, что сложного-то?
10
03 марта 2011 года
Freeman
3.2K / / 06.03.2004
Цитата: Kesano

1. Сделать возможным запись пустого значения


Не записывать, пропускать это поле в update.

Цитата: Kesano

2. Оставить нормальную сортировку чисел ORDER BY ... ASC|DESC


Гы-гы, nulls first/nulls last в MySQL нет. Тогда так:

 
Код:
ORDER BY CASE WHEN price IS NULL THEN -1 ELSE price END -- asc/desc по вкусу
5
03 марта 2011 года
hardcase
4.5K / / 09.08.2005
FLOAT для цены это как-то неразумно, разве в MySQL нет аналога MONEY?
369
03 марта 2011 года
Kesano
451 / / 09.10.2007
Цитата: UAS
Что мешает сделать поле price как FLOAT DEFAULT NULL? Ну или если целые числа, то INT DEFAULT NULL?
Не совсем пойму, что сложного-то?



ХМ... в целом, вроде оно... Надо подшустрить движок, чтобы если значение пустое и поле int - чтобы писал null

369
03 марта 2011 года
Kesano
451 / / 09.10.2007
УАСЬ, в который раз подтолкнул меня в нужном направлении...
Залез в ПХПмайАдмин, открыл для редактирования строку, увидел галочку возле инта "ноль"... поставил, выполнил, посмотрел запрос: price=NULL...

Внес 20 байт изменений в код движка - заработало как надо...
Спасибо, дорогой человек, дай тебе бог здоровья и деткам твоим рости большой красивый пускай девки липнут и счастье тебе несут во веки веков...
)))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог