Получить номер записи в диапазоне дат - автоматическая нумерация документов по месяцам - MySQL
Формулировка задачи:
Добрый день!
Есть задача сделать автоматическую нумерацию документов которая будет начинаться каждый месяц с 1.
Номер документа хранить в базе не получиться т.к. если удалить какой то док. - нумерация должна сдвинуться.
К примеру если удалить документ №2, то №3 должен стать №2
Плиз подскажите как это можно сделать для одной записи и для нескольких
Дата:
2016-11-03Номер:
3Дата:
2016-11-02Номер:
2Дата:
2016-11-01Номер:
1Дата:
2016-10-01Номер:
1 У меня получилось только вывести последовательно номера строк, но это не то...SELECT (@ROW_NUMBER:=@ROW_NUMBER + 1) AS num, date_departure, FROM ae_flight_assignment, (SELECT @ROW_NUMBER:=0) AS t LIMIT 1, 30
Решение задачи: «Получить номер записи в диапазоне дат - автоматическая нумерация документов по месяцам»
textual
Листинг программы
SELECT * FROM ( SELECT table1.*, IF(@typex=MONTH(table1.DATE_F), @NUMBER:=@NUMBER+1, @NUMBER:=1+least(0,@typex:=MONTH(table1.DATE_F))) NUMBER FROM fruits table1, (SELECT @NUMBER:=1, @typex:='_') zz ORDER BY DATE_F DESC ) yy
Объяснение кода листинга программы
- Код написан на SQL языке и выполняет запрос к базе данных.
- Запрос выполняется на таблице
fruits
. - Внутренний подзапрос (в скобках) используется для инициализации переменных @NUMBER и @typex.
- Переменная @NUMBER инициализируется значением 1, а переменная @typex инициализируется значением месяца из столбца
DATE_F
первой строки таблицыfruits
. - Внешний запрос (не в скобках) выполняет выборку данных из таблицы
fruits
. - В выборку включены все столбцы таблицы
fruits
(SELECT *). - Для каждой строки выполняется расчет номера строки в текущем месяце (используется функция MONTH для извлечения месяца из столбца
DATE_F
). - Если месяц в текущей строке совпадает с месяцем в предыдущей строке, то переменная @NUMBER увеличивается на 1.
- Если месяц в текущей строке отличается от месяца в предыдущей строке, то переменная @NUMBER инициализируется значением 1, а переменная @typex инициализируется значением месяца из столбца
DATE_F
текущей строки. - Результатом запроса является список всех строк из таблицы
fruits
с добавленным столбцомNUMBER
, который показывает номер строки в текущем месяце. - Сортировка выполняется по столбцу
DATE_F
в порядке убывания. - Во внешнем запросе используется подзапрос с псевдонимом
yy
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д