0

我有两张桌子:

1)employee有列:e_id, e_name, address;

2)project列:p_id, p_name, start_Date, End_Date.

这两个表之间存在多对多的关系。

我如何存储这种关系以及如何查询以检索“他正在工作的员工详细信息和项目详细信息”?

4

1 回答 1

1

您需要一个交叉引用表:

EmployeeProjectXref: e_id, p_id

e_id 和 p_id 的组合可以作为此外部参照表的主键。

然后,如果 @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 表中的每个条目返回一行(前提是它引用了 Employee 和 Project 表中的真实条目。)如果有一个员工和三个项目,您将获得三行。

于 2013-02-19T18:14:31.570 回答