2014-09-24 110 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;"; 

我的问题是:“是否有可能只用一个查询和使用$ date变量玩吗?”

的种类。只需构建不同的查询(仅在$date的值为“all”时包含WHERE子句)。这可能是更好的解决问题的方法,而不是使用SQL IF()语句或其他方式, D是通过更多的功能到MySQL不是在需要的时候,虽然是一个小的“开销”我认为应该避免

+0

当我说“所有”,这意味着我需要选择所有年份的行,我试过你的代码,它返回的行数相同 – 2014-09-24 08:21:23

+0

啊,好吧!你没有标记PHP,但我假设你使用的是PHP,对吧? – 2014-09-24 08:22:30

+0

是的,sorr我使用PHP。 – 2014-09-24 08:25:14

0

例如:

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