ВЫБЕРИТЕ даты со всех лет

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

SELECT *
FROM produit
WHERE year(date_commande) = '.$date.'
ORDER BY num_serie_produit desc;

куда $date = 2014,
Но эта переменная может иметь значение all, поэтому это означает, что мне нужно выбрать все продукты.
Я знаю, что могу решить мою проблему, выполнив второй запрос следующим образом:

SELECT *
FROM produit
ORDER BY num_serie_produit desc;

Но мне было интересно, смогу ли я использовать только один запрос и поиграть с $ date.

Я попробовал что-то вроде этого:

if ($date == "all"){
$date = '%%';
}

но это ничего не меняет: /

Так возможно ли это?

0

Решение

Но эта переменная может иметь значение всего,

Если $date == "all"затем выполните другой запрос без WHERE пункт.

$sql = "SELECT *
FROM produit
". ($date == "all" ? "WHERE year(date_commande) = ".$date : "") ."ORDER BY num_serie_produit desc;";

Мой вопрос был: «Возможно ли это только одним запросом и поиграть с переменной $ date?»

Вид. Просто создайте запрос по-другому (включите WHERE пункт только если $date имеет значение «все». Это, вероятно, лучший способ решить вашу проблему, а не использовать SQL IF() утверждение, или другие способы, imho, потому что вы будете передавать больше функций в MySQL, когда они не нужны, хотя и небольшие «накладные расходы», я думаю, этого следует избегать.

1

Другие решения

Например:

WHERE "'.$date.'" IN (year(date_commande), "all")
0

По вопросам рекламы [email protected]