mySQL中的非独立查询

mySQL中的非独立查询,mysql,sql,database,Mysql,Sql,Database,我被要求在一个简单的员工数据库中为此创建一个查询,列包括: ninumber-名字-姓氏-地址-主管人数 员工和主管都在同一张表中,并由其9号引用。我被要求生成的查询是: 五,。查找NI编号、员工的名字和姓氏以及员工共享该主管以及员工和主管都在第8部门工作的主管的NI编号。您将在实用2的查询vi中两次提到员工关系。您的结果应以以下标题列示:“员工NI编号”、“姓名”、“姓氏”和“主管NI编号” 因此,我创建了这个查询: SELECT e1.ninumber, e1.fname,

我被要求在一个简单的员工数据库中为此创建一个查询,列包括:

ninumber-名字-姓氏-地址-主管人数

员工和主管都在同一张表中,并由其9号引用。我被要求生成的查询是:

五,。查找NI编号、员工的名字和姓氏以及员工共享该主管以及员工和主管都在第8部门工作的主管的NI编号。您将在实用2的查询vi中两次提到员工关系。您的结果应以以下标题列示:“员工NI编号”、“姓名”、“姓氏”和“主管NI编号”

因此,我创建了这个查询:

SELECT e1.ninumber,
       e1.fname,
       e1.minit,
       e1.lname,
       e1.address,
       e1.superNiNumber,
       COUNT(*) AS nrOfOccurences
FROM   employee AS e1,
       employee AS e2
WHERE  e1.dno = 8
   AND e1.superNiNumber = e2.ninumber
   AND e2.dno = 8
GROUP  BY e1.superNiNumber
HAVING COUNT(*) > 1
我无法用一个不明显的问题来解决这部分问题——“员工们在哪里分享那个主管”。这个查询返回一组行,这些行又隐藏了我想要显示的一些行

我的问题是:我的查询对这个问题正确吗?我可以在mySQL中执行一个非独立查询,让数据库返回所有字段,而不是将它们分组在一起吗

Reutrn是我查询的结果

NInumber    fname  minit    lname   address    supervisorNiNum     number of occerences
666666601   Jill    J   Jarvis  6234 Lincoln, Antrim, UK    666666600   2
666666607   Gerald  D   Small   122 Ball Street, Letterkenny, IRL   666666602   3
666666604   Billie  J   King    556 WAshington, Antrim, UK  666666603   2

谢谢。

在您的结果表列描述中,我没有看到
minit、地址和出现次数。因此,我将您的选择简化为:

SELECT e1.ninumber,
       e1.fname,
       e1.lname,
       e1.superNiNumber,
FROM   employee AS e1,
       employee AS e2
WHERE  e1.dno = 8
       AND e1.superNiNumber = e2.ninumber
       AND e2.dno = 8
       and (select count(*) from employee e3
            where e3.superNiNumber = e1.superNiNumber) > 1;

公认的答案在性能上相当缓慢。经过一点搜索后,我成功地生成了一个运行速度更快的等价物:

SELECT e1.ninumber,
       e1.fname,
       e1.lname,
       e1.superNiNumber
FROM   employee AS e1, (SELECT superNiNumber, 
                        COUNT(*) AS count 
                        FROM employee 
                        GROUP BY superNiNumber 
                        HAVING count > 1) AS e2
WHERE  e1.superNiNumber = e2.superNiNumber

信用证:

请不要在select中使用不在您的组中的列。SQL中没有“非DISTINCT”。我仍然需要删除e2的不同实例。SuperniNumber我不知道,如果我完全理解您的“DISTINCT”请求,请使用subselect查看更新的答案。