Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: выборка в диапазоне дат по дням недели
 
 автор: Дмитрий Смаль   (20.11.2011 в 10:54)   письмо автору
 
 

Здравствуйте!

есть таблица некоторых записей записей
- ИД записи
- понедельник (да/нет)
- вторник (да/нет)
...
- воскресенье (да/нет)

нужно составить запрос который бы искал в диапазоне дат и выбирал только указанные дни недели

например от 01.01.2001 до 01.03.2001 выбрать записи у которых понедельник и среда попадают в этот диапазон

  Ответить  
 
 автор: cheops   (20.11.2011 в 12:31)   письмо автору
 
   для: Дмитрий Смаль   (20.11.2011 в 10:54)
 

Не очень понятна структура таблицы, можете привести результат запроса SHOW CREATE TABLE?

  Ответить  
 
 автор: Дмитрий Смаль   (20.11.2011 в 12:45)   письмо автору
 
   для: cheops   (20.11.2011 в 12:31)
 

CREATE TABLE `excursions` (
  `id` mediumint(8) unsigned NOT NULL auto_increment,
  `monday` tinyint(1) NOT NULL,
  `tuesday` tinyint(1) NOT NULL,
  `wednesday` tinyint(1) NOT NULL,
  `thursday` tinyint(1) NOT NULL,
  `friday` tinyint(1 NOT NULL,
  `saturday` tinyint(1) NOT NULL,
  `sunday` tinyint(1) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1

дни недели 1 - да, 0 - нет
например одна экскурсия проходит по вторникам и по четвергам, другая по средам, нужно сделать выборку всех экскурсий которые проходят за определенный период (логично что период меньше 7 дней, иначе все экскурсии выбираются)

  Ответить  
 
 автор: cheops   (20.11.2011 в 14:16)   письмо автору
 
   для: Дмитрий Смаль   (20.11.2011 в 10:54)
 

С таблицей понятно, теперь не понятно вот с этим
>например от 01.01.2001 до 01.03.2001 выбрать записи у которых понедельник и среда попадают
>в этот диапазон
Так ведь очевидно, что за 2 месяца понедельник и среда обязательно случатся и не раз... Т.е. можно просто выбирать те записи, у которых понедельник и среда установлены в 1?

  Ответить  
 
 автор: Дмитрий Смаль   (21.11.2011 в 15:06)   письмо автору
 
   для: cheops   (20.11.2011 в 14:16)
 

я ошибочно даты указал, надо 01.01.2001 до 03.01.2001 - тоесть три дня
конечно если период больше 7 дней то там надо выбирать все записи так как та или иная экскурсия в какой-то из дней есть

вобщем нужного скл запроса не нашел, счас сдела что на пхп из периода даты начала и даты окончания достаются все дни недели, если их 7 то скл запрос выбирает все экскурсии. если их меньше 7 то на каждый день недели идет через OR:
WHERE monday=1 OR tuesday=1 (так перечисляются только те дни которые попадают в диапазон)

  Ответить  
 
 автор: cheops   (21.11.2011 в 16:24)   письмо автору
 
   для: Дмитрий Смаль   (21.11.2011 в 15:06)
 

Вы именно одним запросом это хотите сделать? Боюсь тут без курсоров/циклов может быть довольно проблематично запрос составить...

  Ответить  
 
 автор: Дмитрий Смаль   (21.11.2011 в 17:12)   письмо автору
 
   для: cheops   (21.11.2011 в 16:24)
 

мне хочется найти оптимальное решение, количество записей в БД достаточно много и это пользовательский поиск, потому нужно не перегружать слжными запросами базу

  Ответить  
 
 автор: cheops   (21.11.2011 в 17:14)   письмо автору
 
   для: Дмитрий Смаль   (21.11.2011 в 17:12)
 

А откуда диапазон от 01.01.2001 до 01.03.2001 поступает и в какой форме (нельзя его заранее преобразовать хотя бы в набор дней недели 1, 2, 3)?

  Ответить  
 
 автор: ladan   (20.11.2011 в 22:51)   письмо автору
 
   для: Дмитрий Смаль   (20.11.2011 в 10:54)
 


<?

mysql_query
("SELECT * FROM ekskyrsii WHERE date>'$date_begine' AND date<'$date_end'")


?>


  Ответить  
 
 автор: Дмитрий Смаль   (21.11.2011 в 15:06)   письмо автору
 
   для: ladan   (20.11.2011 в 22:51)
 

спасибо за ответ, но вы задачу не поняли, в таблице экскурсий даты не указываются а только дни недели

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования