:: Не фоксом единым
Список месяцев
Артём
Автор

Сообщений: 119
Дата регистрации: 23.04.2001
Можно ли сформировать таблицу (точнее хочу SQL запрос), со всеми месяцами и годами с 2010 года (например).
то есть таблицу такого вида
2010 01
2010 02
...
2010 12
2011 01
и так до текущего месяца.

Я это делал просто создав таблицу dbf и заполнял нужными датами в цикле. Может, можно создать одной командой или двумя?

Этот вопрос возник в связи с тем, что таблица с пропущенными месяцами не всегда наглядна. хочется, чтобы все месяцы присутствовали. Например, если в мае продаж не было, то я хочу увидеть ноль, а не пропущенный месяц май.

Может, даже так. есть некоторый запрос в котором минимальная дата и максимальная. к примеру
SELECT date FROM sales
как переделать его в список месяцев и годов без пропусков.



Исправлено 1 раз(а). Последнее : Артём, 04.12.22 00:28
Ratings: 0 negative/0 positive
Re: Список месяцев
PaulWist

Сообщений: 14636
Дата регистрации: 01.04.2004
Серверный диалект какой?


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Список месяцев
Артём
Автор

Сообщений: 119
Дата регистрации: 23.04.2001
я на фокс про. надо, как и всегда, идею, мелочи додумаю.
Ratings: 0 negative/0 positive
Re: Список месяцев
PaulWist

Сообщений: 14636
Дата регистрации: 01.04.2004
Артём
Можно ли сформировать таблицу (точнее хочу SQL запрос), со всеми месяцами и годами с 2010 года (например).
то есть таблицу такого вида
2010 01
2010 02
...
2010 12
2011 01
и так до текущего месяца.

Я это делал просто создав таблицу dbf и заполнял нужными датами в цикле. Может, можно создать одной командой или двумя?

Создай на 100 лет вперёд. (таблица с годами-месяцами, с последовательно возрастающими числами - это нужные таблицы в БД, их надо всегда иметь )


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/1 positive
Re: Список месяцев
Владимир Максимов

Сообщений: 14103
Откуда: Москва
Дата регистрации: 02.09.2000
Паша хочет сказать, что нужно иметь таблицу-календарь. На 100 лет вперед - это 365,25*100 = 36 525 записей. Вполне посильное количество записей для DBF. Ну, если это кажется слишком много, то можно создать календарь на несколько лет вперед и каждый год добавлять дни очередного года

Таблица должна быть постоянная. Не для какой-то одной операции, а обычный постоянный справочник в базе данных. Точно такой же, как справочник поставщиков/клиентов или номенклатур.

Очень много всего "завязано" на календарь. Поэтому всегда лучше иметь его "под рукой", а не создавать "на лету".

Какие еще поля, кроме собственно даты - это зависит от приложения. Но обычно еще отдельно делают 3 поля: Год, Месяц, День. Соответственно, получить список месяцев за период - выборка с Distinct по этой таблице с .. по ...
Ratings: 0 negative/0 positive
Re: Список месяцев
PaulWist

Сообщений: 14636
Дата регистрации: 01.04.2004
Владимир Максимов
... Поэтому всегда лучше иметь его "под рукой", а не создавать "на лету".

Добавлю к словам Владимира, почему "на лету" плохо, в этом случае нет индексов, не будет Rushmore оптимизации.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Список месяцев
AndyNigmatec

Сообщений: 1583
Откуда: Волгоград
Дата регистрации: 28.06.2015
Я бы еще добавил (как минимум) в такую табл/справочник признак рабочий/выходной день.
Ratings: 0 negative/0 positive
Re: Список месяцев
of63

Сообщений: 25340
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
PaulWist
Артём
Можно ли сформировать таблицу (точнее хочу SQL запрос), со всеми месяцами и годами с 2010 года (например).
то есть таблицу такого вида
2010 01
2010 02
...
2010 12
2011 01
и так до текущего месяца.

Я это делал просто создав таблицу dbf и заполнял нужными датами в цикле. Может, можно создать одной командой или двумя?

Создай на 100 лет вперёд. (таблица с годами-месяцами, с последовательно возрастающими числами - это нужные таблицы в БД, их надо всегда иметь )

Неочень приятное решение, что "давйте все ID, или все даты, или диапазон, перечислим". Язык (не фоксовый, общеупотребимый) этого не позвооляет, не имеет синтаксиса, которй разрабыб ы реализовали. Поэтому только подпрограммы, это неизбежно... (и было долго... ) )
Ratings: 0 negative/0 positive
Re: Список месяцев
of63

Сообщений: 25340
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
AndyNigmatec
Я бы еще добавил (как минимум) в такую табл/справочник признак рабочий/выходной день.

Это сложная прога (выходные дни в РФ, или в другой стране)
Интересно, как ты бы ее решил?
Ratings: 0 negative/0 positive
Re: Список месяцев
Владимир Максимов

Сообщений: 14103
Откуда: Москва
Дата регистрации: 02.09.2000
of63
AndyNigmatec
Я бы еще добавил (как минимум) в такую табл/справочник признак рабочий/выходной день.

Это сложная прога (выходные дни в РФ, или в другой стране)
Интересно, как ты бы ее решил?

Вот именно как прога - сложная. А как таблица - простая.

Если стоит задача ведения нескольких календарей, то несколько таблиц и создается (разный график выходных и рабочих дней). Отдельная таблица под каждый вид/тип календаря.

А вот написать прогу, которая бы по некоему алгоритму делала вычисления, например, выходных дней - невозможно. Это не формализуется. Под это дело обычно выходит постановлении правительства. Как ты эти постановления запрограммируешь? Только прямым перечислением дат. Та же таблица, только в виде набора констант. В общем, то же самое, но "в профиль"
Ratings: 0 negative/0 positive
Re: Список месяцев
of63

Сообщений: 25340
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Списки дней, выходных, выношу в список нештатных дат, в "INI" конкретное конторы/филиала. Куча способов вести (возможность заносить оператору) эти даты в "календаре" нештатных выходных дней, и куча способов заставить оператора это делать. Физически - это ЗПТ список дат, или табличка наращиваемая... Больше организационная пробла... Не сложная

> А вот написать прогу, которая бы по некоему алгоритму делала вычисления, например, выходных дней - невозможно. Это не формализуется. Под это дело обычно выходит постановлении правительства. Как ты эти постановления запрограммируешь? Только прямым перечислением дат. Та же таблица, только в виде набора констант. В общем, то же самое, но "в профиль"

Это (например вышеуказаннми списками нештатных рабочих/ нерабочих дат) делается, естественно. В "1С" это же делается?, там не боги силят, нормальные писатели... И они это делают... Мтк это вообще не пробла...

Вот, первая попавшаяся прога по поводу... и таких можно много написать.



Исправлено 1 раз(а). Последнее : of63, 23.12.22 00:57
Ratings: 0 negative/0 positive
Re: Список месяцев
Владимир Максимов

Сообщений: 14103
Откуда: Москва
Дата регистрации: 02.09.2000
of63
Физически - это ЗПТ список дат, или табличка наращиваемая...

И я о том же. О табличке...

Ты что доказать-то хочешь? Что написать программный код - это проще/удобнее, чем расставить галки в таблице? Что при поиске даты вызвать функцию - это проще/удобнее, чем запрос к таблице? В чем предмет спора?
Ratings: 0 negative/0 positive
Re: Список месяцев
of63

Сообщений: 25340
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Функцией, эти даты непредсказуемых прогулов, сделать невозможно
Я их записываю тааблицей, в списке, формата ЗПТ-список,

Тебе проще создать "таблицу" (записанную в неком файле старта, просто перечень дат, через запятую (например 'выхи: 2023, 01-11, ...)

расставить галки в таблице (по одному байту на день - не растолчительно, по мне - некрасиво (хоть в биты превратить, но, тогда будет заморочнрЭнепорнятно...)

Я для себя создал понятие - "ЗПТ-список" - список нечт, через запятую, в символьной строке выражается... Не рекламирую, таблица - тоже хороший вариант, но "таблица" все же, не переменная...

У меня вот так это выглядело (выходные нештатные дни), умерло, потому что в законофигде это уже непонадобилось
Настройки]

; ГГГГ: [Д]ДММ[ГГ][ГГ][.дней]
Дополнительный Нерабочий День ДДММГГГГ = 2014: 101.8,105.4,905.3, 1206.2, 111.4, 2016: 2402, 2022: 0703, 0305, 1005

Пишу, обычно, всякую "универсальную" дрянь, типа

Доб. Штатнее выходные дни прога знает. Вышестояший спич был о внештатных вых. днях. Он вносит проблы в счет ... всяких расчетов ЗП, вы в курсе, дб....



Исправлено 3 раз(а). Последнее : of63, 15.02.23 02:04
Ratings: 0 negative/0 positive
Re: Список месяцев
AndyNigmatec

Сообщений: 1583
Откуда: Волгоград
Дата регистрации: 28.06.2015
Я для себя не видел никакого смысла делить выхи на штатные/нештаные ... заполнил таблицу - и спокойно обычными запросами без разных "мегафункций" пользую.
Мало того, иногда начальству (хз зачем) требуется посчитать прогноз как если бы вот этот день был рабочим - и вуаля, поменял один признак - посчитал и поменял взад, а в случае с функцией это еще та задачка бы была )))
Ratings: 0 negative/0 positive
Re: Список месяцев
Владимир Максимов

Сообщений: 14103
Откуда: Москва
Дата регистрации: 02.09.2000
Календарь - это не нечто "в неком файле старта". Это обычный справочник, каких много в любом приложении. Точно такой же, как справочник номенклатур или клиентов/поставщиков. Со своей спецификой, конечно, но именно что "справочник"

Смысл в том, что внести изменение в справочник может любой пользователь, у которого есть на это права. А вот изменить код - это только разработчик.

Наверное, все-таки надо пояснить.

Я категорически против "тайных" таблиц, про которые никто, кроме разработчика не в курсе. Если таблица создана в приложении, то пользователь должен иметь возможность увидеть ее содержимое. Ну, или результат ее использования, если это, например, таблица связи. Соответственно, если есть права, пользователь должен иметь возможность изменить содержимое этой таблицы.

Вышло постановление о выходных днях - пользователь открыл форму календаря и завел соответствующие даты или расставил галки. Тут уж как именно этот справочник реализован.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 1 (Гостей: 1)

© 2000-2024 Fox Club 
Яндекс.Метрика