2014-09-24 2 views
0

У меня есть запрос, который выглядит следующим образом:Выберите даты от всех лет

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

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

SELECT * 
FROM produit 
ORDER BY num_serie_produit desc; 

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

Я пытался что-то вроде этого:/

Так возможно:

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

, но это ничего не меняет?

ответ

1

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

Если $date == "all", а затем запустить другой запрос, без предложения WHERE.

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

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

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

+0

когда я говорю «все», что означает, что мне нужно для выбора всех строк в течение года. Я пробовал свой код, он возвращает мне то же количество строк. –

+0

Ах, хорошо! Вы не отметили PHP, но я предполагаю, что вы используете PHP, да? –

+0

Да, sorr Я использую PHP. –

0

например:.

WHERE "'.$date.'" IN (year(date_commande), "all") 
Смежные вопросы