私は2つのテーブルを持っています:
1)employee
列: e_id
、e_name
、address
;
2)project
列: p_id
、p_name
、start_Date
、End_Date
。
これら 2 つのテーブルの間には、多対多の関係があります。
この関係をどのように保存し、「従業員の詳細と彼が取り組んでいるプロジェクトの詳細」を取得するためにクエリを実行するにはどうすればよいですか?
私は2つのテーブルを持っています:
1)employee
列: e_id
、e_name
、address
;
2)project
列: p_id
、p_name
、start_Date
、End_Date
。
これら 2 つのテーブルの間には、多対多の関係があります。
この関係をどのように保存し、「従業員の詳細と彼が取り組んでいるプロジェクトの詳細」を取得するためにクエリを実行するにはどうすればよいですか?
間に相互参照表が必要です。
EmployeeProjectXref: e_id, p_id
e_id と p_id の組み合わせを、この Xref テーブルの主キーにすることができます。
次に、@e_id が選択した従業員 ID を保持する変数である場合:
SELECT E.e_name, P.p_name
FROM EmployeeProjectXref EPX
JOIN Employee E ON E.e_id = EPX.e_id
JOIN Project P ON P.p_id = EPX.p_id
WHERE EPX.e_id = @e_id
ORDER BY P.Name
詳細については、それらを SELECT リストに追加してください。例: SELECT E.e_name、E.address、P.p_name、P.start_date、P.end_date など。ここで、E は Employee テーブルのエイリアスであり、P は Project テーブルのエイリアスです。このクエリは、EmployeeProjectXref テーブルのエントリごとに 1 行を返します (ただし、Employee テーブルと Project テーブルの実際のエントリを参照する場合)。1 人の従業員と 3 つのプロジェクトがある場合は、3 つの行が返されます。