объединяя различные утверждения в предложении где - PullRequest
0 голосов
/ 20 января 2011

У меня есть предложение 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)

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

Ответы [ 3 ]

0 голосов
/ 20 января 2011

WHERE (cond1 И cond2 И cond3) ЗАКАЗАТЬ (column_to_sort_on) [desc]

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

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

0 голосов
/ 20 января 2011

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

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 голосов
/ 20 января 2011

Просто добавьте еще одно предложение 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)";

...