データベース テーブルとそのクエリについて問題があります。これが何であるかを教えてください。プロジェクトマネージャーと従業員の関係についてです。さて、声明で彼らの関係を教えてください...
Manager = Manager は、プロジェクト リーダーであるか、複数のプロジェクトのマネージャーである可能性があります。
従業員= (s)マネージャーが管理するプロジェクトまたはプロジェクトSのみに従事する人です。
Project = Project は、ONE Manager のみが管理するプロジェクトです。
従業員 - マネージャーの関係
店長も会社員ですよね?これによると、私は彼らの関係を次のようにしたいと考えています -> 1 人の従業員を複数のマネージャーが管理できます。
すべてのマネージャーは同じタイトルです。つまり、マネージャーのマネージャーはいません。従業員にはマネージャーしかいません。たとえば、マネージャーは 5 人の従業員を管理できます。
従業員 - プロジェクト関係
従業員は意味のあるプロジェクトを持つことができます。また、従業員は意味のある複数のプロジェクトを持つこともできます。したがって、プロジェクトには複数の従業員を含めることもできます。(注意: プロジェクトには複数の従業員を含めることができますが、複数のマネージャーによって管理することはできません)。
マネージャー - プロジェクト関係
マネージャーは複数のプロジェクトを持つことができます。ただし、プロジェクトは複数のマネージャーによって管理されることはありません。
PS: プロジェクトによると、異なるプロジェクトの同じ従業員が複数のマネージャーによって管理される可能性があります。以下の例を参照してください...
Android App PROJECT マネージャー----> パトリック
Android アプリ PROJECT の社員-----> ジョン、スーザン、ミーガン、ジョー。
別のプロジェクト...
IOS App PROJECT マネージャー----> Ryan
IOS App PROJECT の社員----> Claire、Walter、Robert、Megan
それでは、そのためのテーブルをお見せしましょう...どうすればいいのか本当にわかりません...
そのテーブルでは、マネージャーは会社の従業員であるため、「manager_id(FK)」が「employee_id(PK)」を参照するようにしました。
そして、従業員テーブルの「manager_id」を参照するために、Project テーブルに「manager_id(FK)」があります。
そして、私がはっきりと理解していなかったproj_employeeテーブルです。インターネットの例でこの方法を見つけました。そのようにして、それらをクエリで呼び出します。
今、私が試したクエリを投稿させてくださいが、解決策が得られません...
select
e.name as employee_name,
pm.name as manager_name
from Proj_Employee as pe
left outer join Employee as e on e.employee_id = pe.emp_id
left outer join Project as p on p.project_id = pe.project_id
left outer join Employee as pm on pm.employee_id = p.manager_id
where pe.project_id = <project id>
私はこれをお願いしたいと思います...選択したプロジェクトのEmployeeName、ManagerNameを表示するクエリが必要です。私の表が間違っていたら、私を案内してくれるか、どうすればよいか教えてもらえますか?
知識はありますが、どうすればこれを機能させることができるかわかりませんでした。