Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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 正确的sql应该是什么_Mysql_Sql_Phpmyadmin - Fatal编程技术网

Mysql 正确的sql应该是什么

Mysql 正确的sql应该是什么,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,我有以下模式: employee(fname,lname,e_no,age,address,sex,slary,dept_number) dpartment(dept_name,dept_number,dept_location) project(pname,pnumber,plocation,dept_number) works_on(e_no,pnumber,hours) 我必须找到所有员工工作超过3小时的项目名称。可能有一些情况下,员工工作少于3小时,而其他员工工作超过3小

我有以下模式:

 employee(fname,lname,e_no,age,address,sex,slary,dept_number)

 dpartment(dept_name,dept_number,dept_location)

 project(pname,pnumber,plocation,dept_number)

 works_on(e_no,pnumber,hours)
我必须找到所有员工工作超过3小时的项目名称。可能有一些情况下,员工工作少于3小时,而其他员工工作超过3小时。 我需要所有员工工作超过三小时的项目名称。我不知道该怎么考虑这个问题

请帮帮我!谢谢

试试这个:

SELECT p.pname
FROM project AS p
JOIN works_on AS w ON p.pnumber = w.pnumber
GROUP BY p.pname
HAVING COUNT(CASE WHEN hours > 3 THEN 1 END) = COUNT(*)

当您重新表述您的问题时,会发现没有员工工作时间少于三小时的项目,即最低工作时间大于三小时:

SELECT p.pname
FROM project AS p
JOIN works_on AS w ON p.pnumber = w.pnumber
GROUP BY p.pname
HAVING MIN(hours) > 3
或不存在:

SELECT * 
FROM project AS p
WHERE NOT EXISTS
 ( SELECT *
   FROM works_on AS w
   WHERE p.pnumber = w.pnumber
     AND hours <= 3
 )

小心,这不完全一样,因为它将返回没有指定员工的项目。

您是否尝试加入表?似乎有效…您可以解释having子句吗?请…在我的sql中没有使用太多“having”…事实上,我对此很陌生..需要一些解释nice@AL-zami COUNTCASE当小时数>3时,则1结束称为条件聚合:它统计记录有超过3小时的。如果此数字等于COUNT*,则所有项目记录的关联时间都超过3小时。