从1个表和2个视图中创建视图,并在MYSQL中成为1行

从1个表和2个视图中创建视图,并在MYSQL中成为1行,mysql,view,Mysql,View,Halo伙计们,我是个新手,我的家庭作业需要解决方案 首先,如果我的英语不好,我很抱歉 所以我有两个表,一个表是employees数据(表名是emp),另一个是 员工的进出时间(表名为att_punchs),标记0表示进出时间 标志1表示超时 我已经从att_Punchs提出了两种观点来区分时间输入和时间输出,分别是vw_输入和vw_输出 表emp 大众汽车 大众汽车公司 有些情况下,员工来或回家时忘记打卡,如果他们不来,他们当然不会打卡 我需要一个视图,可以显示日期和谁不打卡时,他们来

Halo伙计们,我是个新手,我的家庭作业需要解决方案

首先,如果我的英语不好,我很抱歉

  • 所以我有两个表,一个表是employees数据(表名是emp),另一个是 员工的进出时间(表名为att_punchs),标记0表示进出时间 标志1表示超时
  • 我已经从att_Punchs提出了两种观点来区分时间输入和时间输出,分别是vw_输入和vw_输出

    • 表emp
    • 大众汽车
    • 大众汽车公司
  • 有些情况下,员工来或回家时忘记打卡,如果他们不来,他们当然不会打卡

    我需要一个视图,可以显示日期和谁不打卡时,他们来或回家,而不是打卡的员工没有来

    我用两个视图连接了表,但只有一个日期,查询如下

    SELECT a.emp_pin, a.emp_name, 
           CASE WHEN b.date IS NULL THEN c.date ELSE b.date END AS DATE, 
           b.time_in, c.time_out
    FROM   emp a
    LEFT OUTER JOIN (SELECT emp_pin, emp_name, DATE, time_in 
                       FROM vw_in WHERE DATE = '2020-02-05') b
                 ON a.emp_pin = b.emp_pin
    LEFT OUTER JOIN (SELECT emp_pin, emp_name, DATE, time_out  
                      FROM vw_out WHERE DATE = '2020-02-05') c
                 ON a.emp_pin = c.emp_pin;
    
    结果是这样的

    我只想在一个视图中生成所有数据,因此当我需要查看哪些员工在回来或回来时不打卡,哪些员工今天不来时,只需从[view_name]中选择*,其中日期介于[start_date]和[until_date]之间。

    我已经为表
    emp
    att_punchs


    非常感谢。

    创建视图是任务的一项特定要求吗?是的,这是一项特定要求。这很遗憾,因为在MySQL中查询视图的效率非常低。我想是的,但这是一项要求。你能告诉我有效的方法吗?