1

我正在尝试通过多个关联实体检索数据,即company_area(粉红色)和jobs_employees(蓝色)。我想检索员工(灰色)从特定公司区域所做的所有工作(绿色)。我将如何使用我拥有的数据库结构来做到这一点?

我试过的:

select Jobs.idJobs,jobs.Title, jobs.JobDescription, jobs.Deadline, 
jobs.JobStarted, jobs.jobEnded, jobs.Completed, jobs.Remarks, Priority

from company_area

inner join employees 
on employees.idEmployees = company_area.FK_Employee
inner join jobs_employees
on jobs_employees.FK_Employees = employees.idEmployees
inner join JobPriority 
on jobs_employees.FK_Priority = JobPriority.idJobPriority
inner join jobs
on jobs_employees.FK_Employees = jobs.idJobs 

where company_area.FK_Company = '2' and company_area.FK_Area = '1'

备注: 我知道我可以在公司、区域和工作之间创建一个关联实体,但是如果没有额外的实体,这样做是否可行且高效?

创建数据库的代码>> ERD 图

4

1 回答 1

1

一些建议:

  1. 没有什么神奇的:如果你访问一个表来获取列值或者加入其他的,你肯定需要这个表。

  2. 您的查询中可能存在的问题:如果工作由几个用户执行,您可以多次获得一份工作。

  3. 更好地为所有列使用表前缀。带有前缀 FK 的列名有点误导 - 它是命名外键的标准前缀。

于 2012-12-11T13:24:56.353 回答