php - 如果找不到第二个表行,如何显示第一行

标签 php mysql

如果找不到第二个表行,如何显示第一行,请参阅示例 谢谢

$result1 = mysql_query("
SELECT a.user_name
     , a.date
     , a.checkin
     , o.checkout
  FROM attend a
  LEFT
  JOIN attendout o
    ON a.user_name = o.user_name 
   AND a.date = o.date
 WHERE a.date BETWEEN '2015-06-01' AND '2015-06-09' 
   AND o.user_name = 'salman';
");

现在是这样的

username   date      checkin    checkout
salman  2015-06-01  11:31:34    17:23:47
salman  2015-06-02  11:19:23    17:15:15
salman  2015-06-03  11:48:22    18:16:27
salman  2015-06-06  11:39:26    16:56:13
salman  2015-06-07  11:24:59    17:36:01

我想要这样

   username   date      checkin    checkout
    salman  2015-06-01  11:31:34    17:23:47
    salman  2015-06-02  11:19:23    17:15:15
    salman  2015-06-03  11:48:22    18:16:27
    salman  2015-06-06  11:39:26    16:56:13
    salman  2015-06-07  11:24:59    17:36:01
    salman  2015-06-08  12:24:59
    salman  2015-06-09  10:24:59

因为有时结账行为空

最佳答案

第二表上的条件从WHERE移动到ON:

SELECT a.user_name, a.date, a.checkin, o.checkout
FROM attend a LEFT JOIN
     attendout o
     ON a.user_name = o.user_name AND
        a.date = o.date AND  o.user_name = 'salman'
WHERE a.date BETWEEN '2015-06-01' AND '2015-06-09' ;

当您将条件放入 WHERE 子句时,您会将 LEFT JOIN 转换为 INNER JOIN,因为 NULL 值被过滤掉。

关于php - 如果找不到第二个表行,如何显示第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31290585/

相关文章:

mysql - 将 2 个 SQL 查询组合在一起时出错

php - 管理员用户名和密码错误

php - 使用php将mysql数据拆分为3个bootstrap md列

php - 我无法在数据库中注册为成员 php 使用 ajax 进行注册事件

php - 意外警报打开 : {Alert text : } laravel dusk

php - 去除php中的重复

javascript - 在 JavaScript 警报中使用 PHP 从文件中收集的数据

php - 动态分组查询的 AND 和 OR 部分

PHP mysqli 插入不工作,但没有给出任何错误

mysql - 列中的 CONCAT 搜索