我正在尝试通过多个关联实体检索数据,即 company_area (粉红色)和 jobs_employees (蓝色)。我想从特定的公司和区域检索员工(灰色)所做的所有工作(绿色) STRONG>。我如何使用我拥有的数据库结构?
我尝试了什么:
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'
注意: 我知道我可以在公司,区域和工作之间创建一个关联实体,但是如果没有额外的实体,这样做是否可行且有效?
答案 0 :(得分:1)
一些建议:
没有魔力:如果你访问一个表来获取列值或加入其他值,你肯定需要这个表。
查询中可能存在的问题:如果少数用户执行作业,您可以多次获得一份工作。
最好为所有列使用表前缀。带有前缀FK的列名有点误导 - 它是命名外键的标准前缀。