У меня есть запрос, который выглядит так:
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 = '%%';
}
но это ничего не меняет: /
Так возможно ли это?
Но эта переменная может иметь значение всего,
Если $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, когда они не нужны, хотя и небольшие «накладные расходы», я думаю, этого следует избегать.
Например:
WHERE "'.$date.'" IN (year(date_commande), "all")