![]() |
|
![]() ![]() ![]() |
|
Gekt0r |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 10.4.2008 Репутация: нет Всего: нет |
Всем привет!
Что-то я второй день туплю, надеюсь на помощь... Задача следующая. Есть база, из которой надо сделать выборку. Фишка в том, что запросы в базу будут отличаться, если выборка затрагивает время с 24 декабря по 11 января или остальной период года. На вход принимаем 2 даты - начальную и конечную, по которым будем запрашивать данные. Надо проверить тот интервал, который идет на вход. Я так понимаю, могут быть следующие условия. Соответственно, если нет пересечений с периодом 24.12 - 11.01, то запрос один. Если интервал целиком внутри периода, то запрос другой. Если есть пересечение, то надо разбить на 2 запроса. Если период 24.12 - 11.01 оказывается целиком внутри заданного интервала, то разбиваем на 3 запроса (начальная дата - 23.12, 24.12 - 11.01, 12.01 - конечная дата) что-то я у меня не придумывается, как это можно сделать, можете подсказать? |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Поскольку количество ЗАПРОСОВ отличается - задача решается на клиенте, а не на сервере.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Gekt0r |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 10.4.2008 Репутация: нет Всего: нет |
Может, я что-то не так объясняю... Я имел в виду количество запросов в базу данных. Клиент просто указывает интервал дат. Который потом надо обработать именно на сервере |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Ааа... в таком случае пиши хранимку, которая всё это распарсит и просчитает.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Gekt0r |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 10.4.2008 Репутация: нет Всего: нет |
что написать, я не понял? Если б знал, как написать, я бы тут тему не создавал) |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 7 Всего: 183 |
Akina имел в виду хранимую процедуру. Про них почитай документацию к своей БД.
-------------------- ... |
|||
|
||||
Gekt0r |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 10.4.2008 Репутация: нет Всего: нет |
Блин, я же говорю... Если бы я знал, как это написать, то я бы не задавал тут вопроса!
Мне сам алгоритм непонятен.. Особенно момент, когда период оказывается внутри заданного интервала |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Я не понял - что тебе неясно? Даны два интервала, найти тип их пересечения... геометрию в школе все проходили - нарисуй. Факт пересечения проверяется просто (конец2-начало1)*(конец1-начало2)<0. Тип пересечения определяется проверкой попадания точки начала/конца одного диапазона внутри другого, при попадании (точка-начало)*(точка-конец)<0. Раз хранимая процедура - не жадничай поначалу на ветвления, всё равно работать будет только одна ветка. Потом займёшься оптимизацией. А как пишут хранимки в твоём диалекте и как из них возвращать наборы записей - это в доки по своей СУБД. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |