这个sql有效吗

这个sql有效吗,sql,Sql,编写一条SQL语句,打印满足以下所有条件的所有受薪员工的姓名及其部门编号: 2个项目的工作, 不要赚30000美元, 他们的部门经理和主管姓名相同注:由于姓名不是员工表的pkey,此要求并不意味着这两个人是同一个人。 请注意,主管不是该部门的经理 SQL代码: select ename, d# from employee, department where count(p#) = 2 and salary < 30000 and cname,

编写一条SQL语句,打印满足以下所有条件的所有受薪员工的姓名及其部门编号:

2个项目的工作, 不要赚30000美元, 他们的部门经理和主管姓名相同注:由于姓名不是员工表的pkey,此要求并不意味着这两个人是同一个人。 请注意,主管不是该部门的经理

SQL代码:

select 
    ename, d#
from 
    employee, department
where 
    count(p#) = 2
    and salary < 30000
    and cname, d# in (select ename, d#
                      from employee, department
                      where employee.cname = depatment.cname);

这对您来说是一个好的开始,因为缺少一些关于经理和主管的数据,并且通常您没有提供任何模式:

select ename
from employee e
join department d on e.cname = d.cname
where salary < 30000
group by ename
having count(p#) = 2
它将显示每个工资低于30K的员工,他们在2个项目上工作


您可能需要更多的联接/子查询来实现所需的输出。

测试时会发生什么?您遇到了什么实际问题?看起来像是家庭作业问题。欢迎使用堆栈溢出。请尽快阅读这两页。如果将代码格式化为SQL代码,则会有很大帮助。识别您正在使用的DBMS也是一个好主意——MySQL的答案可能与Oracle或DB2的答案大不相同。在这种情况下可能不是这样,但是识别DBMS仍然是一个好主意。我们还需要查看相关表的大纲模式。你必须在拼写上保持一致;你有部门和部门,但其中至少有一个是错误的。使用FROM employee,department隐式连接也是个坏主意20多年前,在ANSI-92 SQL标准中,旧样式的逗号分隔表列表样式被正确的ANSI连接语法所取代,不鼓励使用它