2013-05-09 72 views
-3

有没有可能在同一时间使用AND/OR运算符,或者在进行查询时只使用其中一个?如何将两个where子句结合使用和/或?

这里是我的代码,如果我想使用两种employee_id_nameresolved_date,我可以使用:

WHERE 
    employee_id_name = '" . $xid . "' 
    OR resolved_date = '" . $date . "' 

下面是我用,如果我想同时使用:

WHERE 
    employee_id_name = '" . $xid . "' 
    AND resolved_date = '" . $date . "' 

是有可能结合这两个条款?如果我想用两个employee_id_nameresolved_date ...如果我也想用其中任何查询......

UPDATE做一个查询

我希望能够同时使用employee_id_nameresolved_date在同一时间,但是会有时间以及我只想使用它们中的任何一个......现在,我不希望每次执行查询时都使用ANDOR更改我的代码。

+0

你想要达到什么目的? – 2013-05-09 10:40:14

+0

第一个查询,也给你第二个结果,对吗? – drinchev 2013-05-09 10:40:21

+0

我不明白。 OR在这里不是唯一的,如果这是你的意思。 – Fildor 2013-05-09 10:40:51

回答

2

除非添加第三个参数以决定是否需要ANDOR,否则不能合并它。在这里,我用$querycondition它可以是1或2。这当然不是好PHP语法:我留给你

WHERE 
    (1= $querycondition AND 
     (employee_id_name = '" . $xid . "' OR resolved_date = '" . $date . "') 
) 
    OR 
    (2= $querycondition AND 
     (employee_id_name = '" . $xid . "' AND resolved_date = '" . $date . "') 
) 
+0

hi ive试图使用你的代码,但我得到了通知:未定义的变量:querycondition ... – 2013-05-09 11:44:37

+0

我确实说过“这不是很好的PHP语法当然:我把它留给你”。 – gbn 2013-05-09 11:46:29

0

当然你也可以加入OR

select 1 
from table t 
where a = b 
and (b = c or b = d) 
; 

方括号不是非常必要的。

如果您只是更改或使用和,则您的选择是完全不同的结果集。所以你必须知道选择应该做什么。

在第一种情况下,您会找到名称匹配或日期的所有记录。在第二种情况下,您只能找到名称匹配的记录,并在同一记录中记录日期。

方式: 第一个查询还发现记录中,其中名称是不同的,如果日期是有效的,因为只有条款必须匹配之一。在AND查询中,所有子句必须在单个记录上匹配才能将其输出到结果集。

+0

*方括号不是非常必要的*但它在处理AND和OR时的良好做法 – 2013-05-09 10:49:05

+0

正因如此,我写了它们并提到它们不是绝对必要的。很难看到更复杂的查询的依赖。 – Devolus 2013-05-09 10:51:07