Задать вопрос
@GSmaster

Как создать правильный запрос к Mysql?

Не могу перестроить таблицу по полю, тип date

В таблице в хаотичном порядке размещены записи, не буду скрывать что данное поле это дата окончания оплаты домена.
Хочу перестроить таблицу таким образом чтобы сперва шли записи с текущей датой минус два месяца.

В силу того что записи выбираются по id - ну тоесть попорядку хочу собственно её и перестроить. Делаю так:

set @id = 0;
 
UPDATE `o`
set `id`= @id:= @id-1; # сперва перестраиваю по в обратном порядке т.к.  некоторых id может и не быть
 

set @id = 0;
 
UPDATE `o`
set `id`= @id:= @id+1
ORDER BY `o`.`whois_paid` = curdate() - INTERVAL 2 MONTH DESC; # вот здесь пытаюсь отсортировать и записать правильный порядок


но сперва идут вроде как правильные даты, кстатит у меня такие данные

2017-11-27 - тоесть времени нет у записей в этом поле
2017-11-26

ну а потом полный разнобой

может и так
0000-00-00
а может и так
2016-10-05

тоесть сбивается сортировка
  • Вопрос задан
  • 77 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@GSmaster Автор вопроса
Спасибо за Ваш ответ, но к сожалению он никак не помог.

mysql_query("set @id = 0") or die (mysql_error());
	 mysql_query("update `" . DOMAIN_TABLE . "` set `id`= @id:= @id-1") or die ("0" . mysql_error());
	 
 	 mysql_query("set @id = 0") or die (mysql_error());
	
	 mysql_query("UPDATE " . DOMAIN_TABLE . " set `id`= @id:= @id+1 ORDER BY `" . DOMAIN_TABLE . "`.`whois_paid`  < (NOW() - interval 2 MONTH) DESC, `" . DOMAIN_TABLE . "`.`whois_paid` DESC") or die ("10" . mysql_error());


Просто мне необходимо последовательно пройти по всем строкам независимо от всех условий. А когда достигнут конец таблицы я её перестраиваю кодом выше.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
Плохая идея.
В таблице в хаотичном порядке размещены записи,

Подозреваю что некий порядок там есть, однако не понимаю причины по которой он вас не устраивает. Id не является полем для сортировки, кроме случаев, когда надо восстановить порядок добавления. Если нужно какое-то поле для сортировки отличное от даты (хотя нафига? есть дата, по ней отлично сортируется), добавьте поле order, и мучайте его. Лично я не вижу смысла в ваших манипуляциях, окромя нежелания вникнуть в понимание как работают запросы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
26 дек. 2024, в 23:03
500 руб./в час
26 дек. 2024, в 21:50
5000 руб./за проект
26 дек. 2024, в 21:01
10000 руб./за проект