Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
date (goldy) 02/12/2002 - 13:55:58
      Re: date (detox) 02/12/2002 - 14:24:03
      Re: date (Фдуч) 02/12/2002 - 14:38:56
      Re: date (goldy) 02/12/2002 - 14:56:49
      Re: date (goldy) 02/12/2002 - 15:01:39
      Re: date (Фдуч) 02/12/2002 - 17:53:37

> Original message text:
> From: goldy - 02/12/2002 - 13:55:58
> Subject:date
> -----------------
> takoi voprosik
> mozno li kakta zdelas takai zapros
> uzser zadajot interval dati tjipa 2002-05-25 - 2002-10-20 i nodo dastats v otvet etot interval razdziljonnij na nedeli nu tjipa
> 2002-05-25 - 2002-06-02
> 2002-06-02 - 2002-06-09
> ....
>
> P.S. izvinjajus cto ne ruskimi bukvami no proto u menja netu takih na klaviature
>


From: Фдуч - 02/12/2002 - 17:53:37
Subject:date
-----------------
Я не знаю специфики Вашей задачи, но думаю, использовать +INTERVAL 7 DAY не очень корректно, так как если у вас начальная дата, скажем среда, то конечная дата будет в среду на будущей неделе, а не скажем, в воскресенье, последний день недели у нас.
Я бы сделал примерно так:
Получив от пользователя две даты, я бы,используя функцию getdate РНР получил бы значения номера дня недели ("wday" - day of the week, numeric : from 0 as Sunday up to 6 as Saturday) после этого сформировал запросы по неделям, обьединив их по union и получим
$query="SELECT CONCAT(', SUM(IF(dat = ''',dat,''', val1 - val2,0)) AS `',dat`,'`') AS `piepr` FROM `data` WHERE dat BETWEEN '".$dat1."' AND '".$dat2."' GROUP BY dat";
потом для каждой из недель в промежутке, пока $dat2 не конечная дата.
$query.="union SELECT CONCAT(', SUM(IF(dat = ''',dat,''', val1 - val2,0)) AS `',dat`,'`') AS `piepr` FROM `data` WHERE dat BETWEEN '".$dat1."' AND '".$dat2."' GROUP BY dat";
после выполнения этого запроса получим результаты, скомпонованные по неделям.
Для упрощения операций инкрементирования даты лучше эти даты перевести в UNIX формат, а перед передачей в майсюкль слепить обратно в timestamp (YYYYMMDDhhmmss) из массива, который возвращает getdate. За счет того, что выполняется только один запрос к базе, этот вариант построения должен работать быстро.



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
5706



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |