我有两张桌子:
1)employee
包含以下列:e_id
,e_name
,address
;
2)project
包含以下列:p_id
,p_name
,start_Date
,End_Date
。
这两个表之间存在多对多的关系。
如何存储此关系以及如何查询检索"他正在工作的员工详细信息和项目详细信息"?
答案 0 :(得分: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表中的实际条目。)如果有一个员工和三个项目,则将获得三行。