2011-01-20 5 views
0

у меня есть некоторые, где пункт как:комбинируя другое заявление, в котором положение

$sWhere = " WHERE MONTH(Inspection_datetime) = '".$Month."' AND 
      YEAR(Inspection_datetime) = '".$Year."' "; 

и другая команда:

WHERE DAY(Inspection_datetime) BETWEEN 8 AND 14 
GROUP BY Line, WEEK(Inspection_datetime), YEAR(Inspection_datetime) 

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

+0

На второй неделе, вы просто означаете дни 8-14, как показано в вашем вопросе, или вы хотите разработать вторую субботу после недели после первая полная/неполная неделя? – RichardTheKiwi

+0

@cyberwiki: 8-14 означает, что я хочу подсчитать или показать данные на 2-й неделе. – klox

ответ

0

Просто добавьте еще один пункт AND к вашему заявлению.

" MONTH(Inpsection_datetime) = '".$Month."' AND YEAR(Inspection_datetime) = '".$Year."' AND WHERE DAY(Inspection_datetime) BETWEEN 8 AND 14 GROUP BY Line, WEEK(Inspection_datetime), YEAR(Inspection_datetime)";

+0

это сохранить? я мог бы сделать так: «ГДЕ ....... = МЕСЯЦ И ..... = ГОД И ДЕНЬ (...) МЕЖДУ 8 И 14? – klox

0

ГДЕ (cond1 И cond2 И cond3) ORDER по формуле (column_to_sort_on) [убывание]

Я думаю, что для сортировки результатов запроса вы должны использовать "заказ ..."

С уважением, - MS

0

Это не хорошая идея для выполнения функций по столбцам даты. Нет, если таблица не мала или вам действительно не нравится производительность. Всегда лучше сделать обратное - построить дату &/диапазон для тестирования.

YEAR(datecolumn) = X and MONTH(datecolumn) = Y 
<< index cannot be used, MONTH() has to be run on all rows 

условие становится (это выглядит осложнено работ лучше MySQL)

$sWhere = " WHERE Inspection_datetime >= '".$Year.'-'.$Month."-1' 
       AND Inspection_datetime < '".$Year.'-'.$Month."-1' 
         + interval 1 month - interval 1 day" 

Чтобы добавить, что в другое состояние, все ИНЕКЕ бы

$sWhere = " WHERE Inspection_datetime >= '".$Year.'-'.$Month."1' 
       AND Inspection_datetime < '".$Year.'-'.$Month."1' 
         + interval 1 month - interval 1 day 
       AND DAY(Inspection_datetime) BETWEEN 8 AND 14" 
Смежные вопросы