Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.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
Php 计数和在条款中发布_Php_Mysqli_In Clause - Fatal编程技术网

Php 计数和在条款中发布

Php 计数和在条款中发布,php,mysqli,in-clause,Php,Mysqli,In Clause,我有一个名为employee history的表,其结构如下 tbl_员工_历史记录 结构 id|history_nr|history_value|employee_id 1 82 83 1 2 86 84 1 3 87 85 1 4 603 1 5 82 83 2 6

我有一个名为employee history的表,其结构如下

tbl_员工_历史记录 结构

id|history_nr|history_value|employee_id
1   82         83             1
2   86         84             1 
3   87         85             1
4   603                       1
5   82         83             2
6   86         83             2
7   87         83             2
8   603        83             2
这是我的表的虚拟数据。现在,我想计算所有历史值为82,86,87603且历史值不应为空的员工,如上例所示,计数应为1,对于员工id 2,所有值均不为空。这是我对实现计数的查询

SELECT count(employee_id) FROM tbl_employee_history where history_nr IN(82,86,87,603) AND history_value!=''
但实际情况是计数返回两个值。 提前谢谢

删除查询的
distinct()
部分,这将只返回唯一的值。由于您在
employee\u id
1和2中各有4行,因此它将仅获取具有不同(唯一)
employee\u id
的第一行

SELECT count(employee_id) FROM tbl_employee_history where history_nr IN(82,86,87,603) AND history_value != ''
//Returns 7 Rows

SELECT count(distinct(employee_id)) FROM tbl_employee_history where history_nr IN(82,86,87,603) AND history_value != ''
//Returns 2 Rows
因此,它只提取2条记录,每个
员工id
一条记录

SELECT count(employee_id) FROM tbl_employee_history where history_nr IN(82,86,87,603) AND history_value != ''
//Returns 7 Rows

SELECT count(distinct(employee_id)) FROM tbl_employee_history where history_nr IN(82,86,87,603) AND history_value != ''
//Returns 2 Rows

我对你的数据库和查询做了一个模型,我得到了7个。你的代码还有其他内容吗?听起来您是在分组还是在寻找不同的值。是的,我在寻找不同的值,我想选择那些不同的员工,他们在in子句中提到的所有历史值都不应为空。如果in子句中提到的任何值为空,则不应考虑该值。查询是select count(distinct(employee_id)),其中历史值在(82,86603,87)中,历史值!=''我已经在我的系统中实现了第二个查询,但问题是,它从上面的数据中返回两个计数。我想在这里实现的是,如果SyryYyNR值中任何一个都是空的,比如ID 4,因为雇员1是空的,它甚至不应该考虑计数中的雇员。因此正确的计数是1而不是2。