我有两张桌子:
1)employee
有列:e_id
, e_name
, address
;
2)project
列:p_id
, p_name
, start_Date
, End_Date
.
这两个表之间存在多对多的关系。
我如何存储这种关系以及如何查询以检索“他正在工作的员工详细信息和项目详细信息”?
我有两张桌子:
1)employee
有列:e_id
, e_name
, address
;
2)project
列:p_id
, p_name
, start_Date
, End_Date
.
这两个表之间存在多对多的关系。
我如何存储这种关系以及如何查询以检索“他正在工作的员工详细信息和项目详细信息”?
您需要一个交叉引用表:
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 表中的真实条目。)如果有一个员工和三个项目,您将获得三行。