如果join为空,如何返回主查询?

时间:2016-05-06 05:32:42

标签: php mysql

我在这里有一个SQL查询:

鉴于

  1. $id = 4;(用户ID)
  2. $date_now = date("Y-m-d");
  3. 我使用PHP

    SELECT  `u`.name, 
            `u`.email, 
            `ud`.id, 
            `ud`.in, 
            `ud`.out 
    FROM users u 
    JOIN dtr ud ON `ud`.id = '$id' 
    WHERE `ud`.entry_date = '$date_now' LIMIT 1
    

    查询返回dtr.id = $id where dtr.entry_date = $date_now存在时我想要的内容。

    我的问题是,每当用户的dtr(在dtr表中找到$id的用户)不存在时,查询返回零结果。 (根据我的查询,这是正确的。)

    但我想要的是在用户的dtr不存在时查询users.nameusers.email

1 个答案:

答案 0 :(得分:1)

正确的查询是使用LEFT JOIN

稍加修改:

SELECT  `u`.name, 
        `u`.email, 
        `ud`.id, 
        `ud`.in, 
        `ud`.out 
FROM users u 
LEFT JOIN dtr ud ON `ud`.id = '$id' AND `ud`.entry_date = '$date_now'
WHERE `u`.id = '$id' LIMIT 1

Where子句无效,因为它首先为空。

感谢@Ruchish Parikh合作