2013-02-19 63 views
-1

我有兩個表:如何檢索具有多對多關係的記錄下注兩個表?

1)employee與列:e_ide_nameaddress;

2)project帶有列:p_id,p_name,start_Date,End_Date

這兩個表之間存在多對多的關係。

如何存儲這種關係,以及如何查詢檢索「他正在工作的員工詳細信息和項目詳細信息」?

回答

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 E.e_name,E.address,P.p_name,P.start_date,P.end_date等。這裏E是Employee表的別名,P是Project表的別名。此查詢將爲EmployeeProjectXref表中的每個條目返回一行(只要它引用Employee和Project表中的實際條目)。如果有一個員工和三個項目,則會得到三行。

+0

謝謝@criticalfix,我還有一個問題 我該如何編寫查詢插入員工詳細信息和相關的工作項目詳細信息? – Naganath 2013-02-19 18:32:06

+0

對於每個表,每個記錄需要一個插入語句。例如,交叉引用表的插入語句如下所示:INSERT EmployeeProjectXRef(e_id,p_id)VALUES(3,101) – criticalfix 2013-02-19 18:36:22

+0

@Naganath我的建議對我有幫助嗎? (你知道,如果他們有幫助,你可以接受答案或upvote。) – criticalfix 2013-02-19 19:01:49

相關問題