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'

注: 会社、地域、仕事の間に連想エンティティを作成できることは知っていますが、追加のエンティティなしでそれを行うことは可能で効率的ですか?

DBを作成するためのコード>> ERD図

4

1 に答える 1

1

いくつかのアドバイス:

  1. 魔法はありません。テーブルにアクセスして列の値を取得したり、他の値を結合したりする場合は、必ずテーブルが必要です。

  2. クエリで考えられる問題:ジョブが数人のユーザーによって実行された場合、1つのジョブを数回取得できます。

  3. すべての列にテーブルプレフィックスを使用することをお勧めします。接頭辞FKの付いた列名は少し誤解を招く可能性があります。これは、外部キーに名前を付けるための標準の接頭辞です。

于 2012-12-11T13:24:56.353 に答える