0

私は2つのテーブルを持っています:

1)employee列: e_ide_nameaddress;

2)project列: p_idp_namestart_DateEnd_Date

これら 2 つのテーブルの間には、多対多の関係があります。

この関係をどのように保存し、「従業員の詳細と彼が取り組んでいるプロジェクトの詳細」を取得するためにクエリを実行するにはどうすればよいですか?

4

1 に答える 1

1

間に相互参照表が必要です。

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 つの行が返されます。

于 2013-02-19T18:14:31.570 に答える