我被要求在一个简单的员工数据库上为此创建查询,列包括:
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
谢谢。
在您的结果表列说明中,我看不到minit, address and number of occurrences。因此,我会将您的选择简化为:
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;