Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL上的GROUP BY和JOIN出现问题_Sql_Join_Subquery - Fatal编程技术网

SQL上的GROUP BY和JOIN出现问题

SQL上的GROUP BY和JOIN出现问题,sql,join,subquery,Sql,Join,Subquery,我有两个表,一个有员工姓名和员工代码,另一个有相同的员工代码,但有员工的到达和离开时间。后一个表中的一列包含一个varchar,说明他们是晚到还是早到,该表显示了3天和6名员工的值。 我需要使用join来显示第一个表中的名字和姓氏以及第二个表中的每一列,并且不显示迟到一次或多次的员工。 我现在遇到的错误代码是: SELECT EmpRegister.LastName, EmpRegister.FirstName, TimeSheet.* FROM EmpRegis

我有两个表,一个有员工姓名和员工代码,另一个有相同的员工代码,但有员工的到达和离开时间。后一个表中的一列包含一个varchar,说明他们是晚到还是早到,该表显示了3天和6名员工的值。 我需要使用join来显示第一个表中的名字和姓氏以及第二个表中的每一列,并且不显示迟到一次或多次的员工。 我现在遇到的错误代码是:

SELECT 
    EmpRegister.LastName, 
    EmpRegister.FirstName, 
    TimeSheet.* 
FROM EmpRegister 
    INNER JOIN TimeSheet ON EmpRegister.ID=TimeSheet.EmpID 
WHERE Flag <> 'Late'
GROUP BY Emp.ID
选择
EmpRegister.LastName,
EmpRegister.FirstName,
时间表。*
从EMP注册
EmpRegister.ID=TimeSheet.EmpID上的内部联接时间表
“迟到”标志在哪里
按Emp.ID分组

我没有时间编写一组测试数据,但请尝试以下方法:

SELECT DISTINCT
    EmpRegister.LastName, 
    EmpRegister.FirstName, 
    TimeSheet.* 
FROM EmpRegister 
INNER JOIN TimeSheet 
    ON EmpRegister.ID=TimeSheet.EmpID 
WHERE NOT EXISTS (
  SELECT 1
  FROM TimeSheet 
  WHERE  EmpRegister.ID = TimeSheet.EmpID
  AND Flag = 'Late'
  )

您能提供您拥有的样本数据和预期输出吗?如果要显示给定员工的所有时间表条目,您不能按分组。使用
WHERE标志'Late'
无效,因为它应用于每一行,而不是客户端的所有行。也许您试图通过
分组方式来克服这一问题,但这不是解决问题的方法。请尝试
不存在的地方()