我正在就数据库开发人员的职位进行技术考试时,遇到一个问题:
显示所有未涵盖物种的所有详细信息 在英国动物园工作的员工的专业。
表格:
Zoo: ZooName,City,Country,City
Animal: AnimalId,Species,ZooName,Gender,Dob
Employee:EmployeeId,FirstName,LastName,Gender
EmployeeContract: EmployeeId,ZooName,Salary,StartDate,EndDate
Species: Species,Status,TotalAnimals
Specialty:EmployeeId,Species
我不理解问题的一部分,即“ 没有任何专业技能的员工”。我认为“种类”和“特殊性”表之间必须保持联系,因为我们会发现没有雇员的种类反对该种类,并且基本上这将是我们没有雇员的种类,但是我不确定我是否在思考方向是否正确。
我发现很难弄清楚这一点的逻辑。有人可以请我解释一下这个逻辑吗
答案 0 :(得分:1)
首先让我们获取在另一个表中使用的每个表字段:
ZooName
用于动物表。Species
用于种类和特殊表。EmployeeId
用于 EmployeeContract 和 Specialty 表。问题是要显示未在英格兰动物园工作的雇员的任何专业知识涵盖的物种的详细信息。
我相信他们要问的是在Specialty表中注册的物种数据,处理该动物的员工不在英格兰动物园内注册。
您可以执行以下操作:
Select s.Species, s.Status, s.TotalAnimals -- using Species table as select since the question ask for all the details for species
From Species s -- get species data
Left Join Specialty sp ON s.Species = sp.Species -- get specialty data
Left Join Animal a ON s.Species = a.Species -- get animal data
Left Join Zoo z on a.ZooName = z.ZooName -- get zoo data
Where Zoo.Country <> 'England' -- not in England Zoo