Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Попадание записей в период дат. 
:(
    Опции темы
Dumm
Дата 22.4.2013, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 11.7.2010

Репутация: нет
Всего: 1



Всем не хворать! Есть такое дело: нужно выбрать записи из Таблицы1, где дата (date_in) находится в периоде, обозначенном датами date_beg и date_end. Период находится в Таблице2. Проблема в том, что периодов может быть несколько. Если бы они (периоды) шли подряд, например так: 
Код

DATE_BEG     DATE_END
01.01.2013   31.01.2013
01.02.2013   28.02.2013
01.03.2013   31.03.2013
 то все было бы просто: нужно выбрать MIN(DATE_BEG), MAX(DATE_END) и тогда
Код

SELECT * FROM Таблица1 WHERE date_in BETWEEN (MIN(DATE_BEG) AND MAX(DATE_END))
 (Такая форма записи не работоспособна, но я стараюсь передать суть, ибо меня интересует конструктивная составляющая.) И тогда, если date_in, скажем, равно 15.02.2013, то такая запись отберется и будет совершенно права. Но как быть, если периоды дискретны, например, так: 
Код

DATE_BEG     DATE_END
01.01.2013   31.01.2013
01.03.2013   31.03.2013
 тогда при date_in, равной 15.02.2013, запись отберется ошибочно. Вот и вопрос, как быть?
PM MAIL   Вверх
Akina
Дата 22.4.2013, 19:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Код

select distinct t1.*
from table1 as t1, table2 as t2
where t1.date >= t2.date_start and t1.date <= t2.date_end



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dumm
Дата 22.4.2013, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 11.7.2010

Репутация: нет
Всего: 1



Это сработает при непрерывном периоде. Однако так отберутся записи и при t1.date = '15.02.2013'. А во втором случае вообще нет такого периода. Это будет неверно.

Добавлено через 1 минуту и 33 секунды
Или я неверно понимаю логику предложенной конструкции?
PM MAIL   Вверх
Akina
Дата 22.4.2013, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Dumm, ты эта... поспи... а завтра ответишь... а то такую пургу несёшь, что уши вянут.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dumm
Дата 23.4.2013, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 11.7.2010

Репутация: нет
Всего: 1



Ну да, чего то я ступил. Причем, так гораздо проще, чем я делал. Выходит чесал правой ногой левое ухо... Спасибо, все работает.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0424 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.