У меня есть выражение where where:
$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)
как мне сделать, чтобы объединить обе команды, чтобы стать одной? потому что я хочу показывать данные на второй неделе и сортировать их в выбранном месяце и году.
Просто добавьте другое предложение 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)";
Это не хорошая идея для выполнения функций в столбцах даты. Нет, если таблица не мала или вам действительно не нравится производительность. Всегда лучше сделать обратный - построить дату &/range для тестирования.
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"
Чтобы добавить это к другому условию, все предложение WHERE будет
$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"
ГДЕ (cond1 AND cond2 AND cond3) ORDER by (column_to_sort_on) [desc]
Я думаю, что для сортировки результатов запроса вы должны использовать "order by..."
С уважением, - М.С.