Спасайте. MySQL и ORDER BY
Есть в таблице поле, допустим 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
Я догадываюсь, что требую почти невозможного... а вдруг...
Спасибо.
Не совсем пойму, что сложного-то?
Цитата: 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 по вкусу
FLOAT для цены это как-то неразумно, разве в MySQL нет аналога MONEY?
Цитата: UAS
Что мешает сделать поле price как FLOAT DEFAULT NULL? Ну или если целые числа, то INT DEFAULT NULL?
Не совсем пойму, что сложного-то?
Не совсем пойму, что сложного-то?
ХМ... в целом, вроде оно... Надо подшустрить движок, чтобы если значение пустое и поле int - чтобы писал null
Залез в ПХПмайАдмин, открыл для редактирования строку, увидел галочку возле инта "ноль"... поставил, выполнил, посмотрел запрос: price=NULL...
Внес 20 байт изменений в код движка - заработало как надо...
Спасибо, дорогой человек, дай тебе бог здоровья и деткам твоим рости большой красивый пускай девки липнут и счастье тебе несут во веки веков...
)))