2010-03-23 50 views
0

在一个页面,它应该显示的记录,从下拉菜单中有以下选择一个月,它是在?个月=设定三月MySQL查询例外

所以查询将做到这一点

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) . "' AND finished='0' ORDER BY date ASC"; 

但它显示在完成的列中值为2的记录,我不希望查询包含此值。

我已经试过

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) . "' AND finished='0' OR finished = '1' OR finished = '3' ORDER BY date ASC"; 

但它显示了在不同月份的记录时,它不应该是。

所以基本上我想要的记录排除拥有的在不会在页面中显示的记录中的值的记录。

回答

0

你的第一个查询应该做你想做的。行finished = '2'不应退还。

忽略不存在在你的第二个查询一个错误,你应该修正:

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) . 
     "' AND (finished='0' OR finished = '1' OR finished = '3') ORDER BY date ASC"; 

不同的是围绕or子句,因为括号小于或更强烈地结合。

你也可以实现更简洁使用IN相同的结果:

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) . 
     "' AND finished IN ('0', '1', '3') ORDER BY date ASC"; 
+0

哇,快速回答:)谢谢你,我用你的第二个代码 – MacMac 2010-03-23 21:50:20

0

AND finished='0' OR finished = '1' OR finished = '3'

AND finished != 2

AND (finished = 0 OR finished = 1 OR finished = 3)