Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Mysql 具有内部联接的计数操作_Mysql - Fatal编程技术网

Mysql 具有内部联接的计数操作

Mysql 具有内部联接的计数操作,mysql,Mysql,我在一个数据库中有两个表 Employee +----------+-------+-----------+-----------+------+-----------+ | Fname | Minit | Lname | Emp_ID | Sex | Dept_num | +----------+-------+-----------+-----------+------+-----------+ | John | S | Doe | 123

我在一个数据库中有两个表

Employee
+----------+-------+-----------+-----------+------+-----------+
|  Fname   | Minit |  Lname    |  Emp_ID   | Sex  | Dept_num  |
+----------+-------+-----------+-----------+------+-----------+
| John     | S     | Doe       | 123456789 | M    |         5 |
| Susan    | R     | Smith     | 333445555 | F    |         5 |
| Bob      | A     | Parker    | 999887777 | M    |         3 |
| Franklin | T     | Johnson   | 987654321 | M    |         4 |
| Debbie   | K     | Spencer   | 666884444 | F    |         3 |
| Stephen  | L     | English   | 453453453 | M    |         2 |
| Mary     | T     | Moore     | 987987987 | F    |         4 |
| James    | R     | Donaldson | 888665555 | M    |         1 |
+----------+-------+-----------+-----------+------+-----------+

Works_on
+-----------+-----------+
|  Emp_ID   | Proj_num  |
+-----------+-----------+
| 123456789 |         1 |
| 123456789 |         2 |
| 666884444 |         3 |
| 453453453 |         1 |
| 453453453 |         2 |
| 333445555 |         2 |
| 333445555 |         3 |
| 333445555 |        10 |
| 333445555 |        20 |
| 999887777 |        30 |
| 999887777 |        10 |
| 987987987 |        10 |
| 987987987 |        30 |
| 987654321 |        30 |
| 987654321 |        20 |
| 888665555 |        20 |
+-----------+-----------+
我一直在做一些基本操作的练习,以了解它们在MySQL中的作用,但有一个我一直坚持。比如说,我想知道在每个项目上工作的所有员工的姓名。由于没有员工在项目1、2、3、10、20和30上工作,因此他们的查询应该返回空结果

我试图做的是计算每个Emp ID出现在桌子上的作品中的次数。这将告诉我他们正在进行的项目的数量。为此,我尝试对Emp_ID使用
COUNTS
方法。我尝试运行的查询如下:

SELECT employee.Fname, employee.Minit, employee.Lname, 
COUNT(works_on.Emp_ID) AS Num_projects FROM works_on
INNER JOIN employee
ON works_on.emp_id=employee.emp_id
WHERE num_projects=6;
但是我得到了一个错误,因为num_projects是WHERE子句中的一个未知列。我是SQL的新手,在w3schools.com这样的网站上读了很多书,上面的很多例子都非常简单易懂,但对于初学者来说,这样的例子有点复杂


我的逻辑是,查询将遍历并计算每个Emp\u ID在works\u on中出现的次数。例如,ID 33344555在表中出现4次,因此员工33344555工作的项目数为4。我试图让它显示每个员工从事的项目数量,从中我可以选择所有项目的数量,正如我所说的是零。
COUNT
方法是实现这一点的最佳方法,还是使用
DISTINCT
更合适。由于
COUNT
返回符合指定条件的行数,我认为这是正确的操作。

注意MySQL中的大小写敏感:

你有:

SELECT employee.Fname, employee.Minit, employee.Lname, 
COUNT(works_on.Emp_ID) AS Num_projects
然后:

确保它是正确的

WHERE Num_projects=6;

如果将您的项目定义为Num_项目,where子句必须将其完全引用为Num_项目。。HAVING COUNT(*)=all projects查看您的项目列表中没有
num\u projects
列databases@Strawberry请查看重复链接不要担心重复问题。关键不是为了重复而打你,而是为了建立一个有用答案的网络。顺便说一下,检查一下这个sql小提琴。不,这不是解决办法。我没有足够的声誉来添加一个评论阴影,我同意这是更多的。显然这不是完整的解决方案,但我想就WHERE子句错误给出一些反馈。不鼓励这样做?您所写的不是未知列错误的原因。请检查正确答案的重复链接。顺便说一句,如果你的意思是作为一个评论,那么你应该避免把它作为一个答案发布。不鼓励将评论作为答案发布。
WHERE Num_projects=6;