gpt4 book ai didi

php - 如何比较两个不同的SQL表并得到不同的值?

转载 作者:行者123 更新时间:2023-11-29 13:18:01 24 4
gpt4 key购买 nike

对于标题问题,我很抱歉,我不太清楚我想要做什么,但我不知道如何解释,请阅读以下内容以获取进一步的解释:

我有两个表,一个是“employees”表,其中包含employeesName 和employeesInTime(他们应该上类的时间)。

然后我有一个辅助表,员工在其中记录他们的工作时间,其中包含行员工姓名、时间输入和超时。

我需要做的是实现一个系统,在这个系统中我可以看到每个员工的所有“上类”时间,并了解他们是否准时、迟到或根本没有上类。

最终报告应如下所示:

Employees Name // In // Out // Month - Jan

1 / 2 / 3 / 4 / 5 / 6 / ......
john smith 8:00 17:00 P P P L M P .......

(P 表示及时,L 表示迟到,M 表示错过)。当您将鼠标悬停在信件上时,它还应该告诉他们他们什么时间进来的。

到目前为止,我得到的是一张包含所有员工以及他们应该进出的时间的表格。

对于另一部分(月度报告),我完全陷入困境。

我得到了这个:

$query2 = "select * from info where `inout`='in' ";
$result2 = mysql_query($query2);

if($result2 === FALSE) {
die(mysql_error()); // valid only on development stage for debugging
}

while($row = mysql_fetch_array($result2))
{
$timeIn = "".$row['timestamp']."";
$name = "".$row['fullname']."";
$timeIn = $timeIn + @$tzo;
echo '<strong>'.$name . '</strong>: ' . date($timefmt, $timeIn) .'<br />';
}

mysql_free_result($result2);

这为我提供了员工的所有信息,但问题是我多次收到同一名员工。我需要从一名员工那里获取所有员工的所有信息。

任何关于我应该朝哪个方向发展的观点将不胜感激。我认为我应该以某种方式连接两个表以获得我想要的结果,但无论我多么努力,我认为我无法弄清楚哪个查询将从一名员工那里获取所有信息,然后为所有员工获取它,所以它看起来像所需的表格报告。

如果这个问题已经在上一个问题中得到了回答,请指出,我很抱歉我已经在 stackoverflow 上进行了谷歌搜索,但没有找到类似的内容。

感谢您的宝贵时间。

编辑:这里是 SQLFiddle

最佳答案

编写一个返回该月 31 天的 31 个字段的查询并不是一个好的解决方案,因此您需要一个查询,该查询返回每个员工的次数与该月的长度相同。

我将给出我将要做什么的粗略轮廓,因此您也有工作来弄清楚细节:)。首先从第一个表创建一个表,每个员工都有一个数组:

$employees = array( 
'emp1' => array('name' => 'emp1', 'in' => 8, 'out' => 16),
'emp2' => array(...),
...);

然后查询第二个表本月的来龙去脉,并保存到前面的数组中:

foreach($row = mysql_fetch_array($result2)) {
$day = ...; // count it from timestamp
$timeOfDay = ....; // count it from timestamp
$employees[ $row['name'] ]['checks'][$day][ $row['inout'] ] = $timeOfDay;
}

是的,这是一个复杂的数组数组。

最后,打印报告:

foreach($row = mysql_fetch_array($result2)) {
$day = ...; // count it from timestamp
$timeOfDay = ....; // count it from timestamp
$employees[ $row['name'] ]['checks'][$day][ $row['inout'] ] = $timeOfDay;
}

foreach($employees as $employee) {
print $employee['name'] . ':';
// for loop through days,
// otherwise missed days would not be shown
for( $day = 1; $day < $maxDay; $day++) {
// it would be nice to check, whether 'in' and 'out' values both exist
if (array_key_exists($day, $employee['checks'])) {
if ($employee['in'] <= $employee['checks'][$day]['in'] &&
$employee['out'] <= $employee['checks'][$day]['out']) {
print ' P ';
} else {
print ' L ';
}
} else {
print ' M ';
}
}
}

关于php - 如何比较两个不同的SQL表并得到不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21221845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com