объединяя различные утверждения в предложении где

0

У меня есть выражение 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)

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

  • 0
    Под второй неделей вы подразумеваете дни 8–14, как показано в вашем вопросе, или вы хотите проработать 2-ю неделю с понедельника по воскресенье после первой полной или частичной недели?
  • 0
    @cyberwiki: 8-14 означает, что я хочу считать или показывать данные на 2-й неделе.
Теги:
where-clause

3 ответа

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?
0

Это не хорошая идея для выполнения функций в столбцах даты. Нет, если таблица не мала или вам действительно не нравится производительность. Всегда лучше сделать обратный - построить дату &/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"
0

ГДЕ (cond1 AND cond2 AND cond3) ORDER by (column_to_sort_on) [desc]

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

С уважением, - М.С.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню