什么是正确的查询?

时间:2015-03-02 14:51:35

标签: php mysql sql

我试图找出我的查询应该是什么样子。

通过此查询我select * from usr_time_reg
WHERE usr_time_nr = '$usr_time_nr' AND usr_stamp_in LIKE '$y_m'

到目前为止,这么好! 现在我还要选择usr_stamp_in WHERE usr_stamp_in = '0000-00-00 00:00:00' AND usr_stamp_out = '$y_m

该查询应该如何? 查询下面是选择包含'0000-00 ...'的所有usr_stamp_in。我仍然需要使用“time_nr& y_m”进行过滤!

//Make the Select in mysql
$query = "SELECT * FROM usr_time_reg
                   WHERE usr_time_nr = '$usr_time_nr' AND usr_stamp_in LIKE '$y_m'
                   OR usr_stamp_in = '0000-00-00 00:00:00' AND usr_stamp_out LIKE '$y_m'
                   ORDER BY usr_stamp_in DESC";

变量

$y_m = "2015-03%";
$time_nr = "1";

分贝

ID  time_nr        stamp_in                stamp_out
1    1        2015-03-03 06:00:00     2015-03-03 15:30:00
2    1        0000-00-00 00:00:00     2015-03-04 15:30:00
3    1        2015-03-03 06:00:00     0000-00-00 00:00:00

1 个答案:

答案 0 :(得分:1)

我认为您想要做的所有事情都可以在WHERE语句中完成。

我最好的猜测是:

SELECT *
FROM usr_time_reg
WHERE 
    usr_time_nr = '$usr_time_nr'
    AND
    (
        usr_stamp_in LIKE '$y_m'    
        OR
        (
            usr_stamp_in = '0000-00-00 00:00:00' 
            AND 
            usr_stamp_out = '$y_m'
        )
    );

此处usr_time_nr始终必须为'$user_time_nr',然后由OR分隔的其中一个条件必须为真。