MYSQL通过多个关联实体选择语句

时间:2012-12-11 12:42:24

标签: mysql select join

我正在尝试通过多个关联实体检索数据,即 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'

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

Code to create DB >>  ERD diagram

1 个答案:

答案 0 :(得分:1)

一些建议:

  1. 没有魔力:如果你访问一个表来获取列值或加入其他值,你肯定需要这个表。

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

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