Получить номер записи в диапазоне дат - автоматическая нумерация документов по месяцам - 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

Объяснение кода листинга программы

  1. Код написан на SQL языке и выполняет запрос к базе данных.
  2. Запрос выполняется на таблице fruits.
  3. Внутренний подзапрос (в скобках) используется для инициализации переменных @NUMBER и @typex.
  4. Переменная @NUMBER инициализируется значением 1, а переменная @typex инициализируется значением месяца из столбца DATE_F первой строки таблицы fruits.
  5. Внешний запрос (не в скобках) выполняет выборку данных из таблицы fruits.
  6. В выборку включены все столбцы таблицы fruits (SELECT *).
  7. Для каждой строки выполняется расчет номера строки в текущем месяце (используется функция MONTH для извлечения месяца из столбца DATE_F).
  8. Если месяц в текущей строке совпадает с месяцем в предыдущей строке, то переменная @NUMBER увеличивается на 1.
  9. Если месяц в текущей строке отличается от месяца в предыдущей строке, то переменная @NUMBER инициализируется значением 1, а переменная @typex инициализируется значением месяца из столбца DATE_F текущей строки.
  10. Результатом запроса является список всех строк из таблицы fruits с добавленным столбцом NUMBER, который показывает номер строки в текущем месяце.
  11. Сортировка выполняется по столбцу DATE_F в порядке убывания.
  12. Во внешнем запросе используется подзапрос с псевдонимом yy.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы