带有左联接混乱的SQL查询

时间:2020-03-12 06:09:46

标签: sql left-join

我正在就数据库开发人员的职位进行技术考试时,遇到一个问题:

显示所有未涵盖物种的所有详细信息 在英国动物园工作的员工的专业。

表格:

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

我不理解问题的一部分,即“ 没有任何专业技能的员工”。我认为“种类”和“特殊性”表之间必须保持联系,因为我们会发现没有雇员的种类反对该种类,并且基本上这将是我们没有雇员的种类,但是我不确定我是否在思考方向是否正确。

我发现很难弄清楚这一点的逻辑。有人可以请我解释一下这个逻辑吗

1 个答案:

答案 0 :(得分:1)

首先让我们获取在另一个表中使用的每个表字段:

  • 动物园 ZooName用于动物表。
  • 动物 Species用于种类特殊表。
  • Employee 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