一尘不染

MySQL中的NOT DISTINCT查询

sql

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

ninumber-名字-姓氏-地址-SuperVisorNiNumber

员工和主管均位于同一表中,并按其编号进行引用。我被要求构建的查询是:

v。查找NI编号,雇员的姓氏和名字以及主管与该主管共享的主管的NI编号,以及雇员和主管在部门8中的工作。您将在“实践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中执行NON DISTINCT查询以使数据库返回所有字段,而不是将它们分组在一起。

从我的查询中查询结果

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

谢谢。


阅读 247

收藏
2021-05-30

共1个答案

一尘不染

在您的结果表列说明中,我看不到minit, address and number of occurrences。因此,我会将您的选择简化为:

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;
2021-05-30