Php MySQL为考勤案例选择行
我有这些桌子:Php MySQL为考勤案例选择行,php,mysql,sql,Php,Mysql,Sql,我有这些桌子: table 1 : attendance ------------------------------- ID | DATE | EMPLOYEE_ID | ------------------------------- 1 2013-09-10 1 2 2013-09-10 2 3 2013-09-10 3 ------------------------------- table 2: employee
table 1 : attendance
-------------------------------
ID | DATE | EMPLOYEE_ID |
-------------------------------
1 2013-09-10 1
2 2013-09-10 2
3 2013-09-10 3
-------------------------------
table 2: employee
---------------
ID | NAME |
---------------
1 Smith
2 John
3 Mark
4 Kyle
5 Susan
6 Jim
---------------
显示员工选项的实际代码。
while($row=mysql_fetch_array($query)){
echo "<option value='$row[employee_id]'>$row[first_name] $row[last_name]</option>";
}
?>
while($row=mysql\u fetch\u array($query)){
回显“$行[名]$行[姓]”;
}
?>
如何显示未在表1中注册的员工列表?
条件是,如果员工已在表1中注册,则他们不会出现在选项中。
while($row=mysql_fetch_array($query)){
echo "<option value='$row[employee_id]'>$row[first_name] $row[last_name]</option>";
}
?>
我想在
元素的
中显示列表。所以它会回来:凯尔,苏珊,吉姆
请告诉我正确的查询,或者如果有更好的选择,也会很好。请给出一些解决方案并解释。多谢各位
更新/编辑:
如果表1中没有最新日期,则也基于当前日期,例如今天是2013-09-15。它将显示所有员工 您可以使用
左连接来执行此操作,然后检查是否没有匹配项:
select e.*
from employee e left outer join
attendance a
on e.id = a.employee_id
where a.employee_id is null;
这可能是MySQL中最有效的选项
编辑:
要包含特定日期,请将条件添加到on
子句中:
select e.*
from employee e left outer join
attendance a
on e.id = a.employee_id and a.date = date('2013-09-20')
where a.employee_id is null;
如果我理解正确,这应该有效,让所有ID不在考勤表中的员工都参与进来
SELECT * FROM employee WHERE employee.ID NOT IN
(SELECT EMPLOYEE_ID FROM attendance)
使用joinquery来实现这一点是的,它可以工作:)。但我忘了告诉你另一个情况。如果当前日期为:2013-09-20,则将显示所有员工。我该怎么做?再次感谢