2014-10-01 26 views
1

長時間讀者第一次張貼海報。查詢兩張鏈接到相同主鍵的表

我有什麼看起來像一個直接的訪問問題。

我有一個員工表與這些領域;

| EmployeeID | StaffName |電話|電子郵件|

僱員是在兩個表的外鍵 - 用於記錄發電機的狀態,即

一個| LOGID |狀態|登錄由|

,一個用於與發電機的任何事件

| IncidentID |描述|上調| LOGID |

我可以創建一個查詢鏈接事件及其日誌的詳細信息,例如

| IncidentID |描述|上調| LOGID |登錄由|

如果我將EmployeeID編號放入'Logged By'和'Raised By' - 如果我把StaffName作爲公司需要,它將無法正常工作,因爲它從相同的主鍵中選擇了兩個StaffNames。

任何方法?

這裏是Access代碼,LoggedBy和RaisedBy加入到EmployeeID的部分以粗體顯示。

SELECT [2_Incidents] .IncidentID,[2_Incidents]。說明,[8_Employees] .StaffName AS [上調],[1_Log] .LogID,[8_Employees] .StaffName AS [登錄通過]

FROM 8_Employees INNER JOIN(2_Incidents INNER JOIN 2_Incidents ON [1_Log] .LogID = [2_Incidents] .LogID)ON [8_Employees] .EmployeeID = [1_Log] .LoggedBy AND [8_Employees] .EmployeeID = [2_Incidents] .RaisedBy);

我解決此得到通過創建僱員表的副本,但如果有鏈接到員工在未來(例如閉幕,認證機構等)

+0

你想要什麼?獲取登錄/提出的人員姓名? – user28470 2014-10-01 09:08:35

+0

用您當前的查詢編輯您的問題 – user28470 2014-10-01 09:09:58

+1

當您[編輯]您的問題時,請包括[最小示例](http:// stackoverflow。com/help/mcve)以及來自每個表格的一些示例數據,您正在使用的查詢,您收到的結果以及您所尋找的結果。 – 2014-10-01 10:57:46

回答

0

如果我更多的領域這有可能會尷尬正確理解你,解決方案是加入僱員表兩次。

在您的日誌信息,您正在做的事情一樣SELECT * FROM incident JOIN log USING (LogID) ...

你提到「來自同一個主鍵選擇兩個StaffNames」 - 我認爲你正試圖以某種方式加入員工與上調和已記錄通過。

如果你真的加入到員工的兩個副本:SELECT ... FROM incident JOIN log USING (LogId) JOIN employee ei ON (ei.employeeid = incident.raised_by) JOIN employee el ON (el.employeeid = log.logged_by)可以引用那麼ei.staffname(根據員工加薪事件)和el.staffname(根據員工記錄)

PS。對不起,關於非訪問語法,但希望你可以轉換!

+0

感謝你的支持,這就是我爲解決問題所做的事情 - 創建了Employee表的副本,如果這是一種標準的做事方式,那麼很棒。 – Oscar 2014-10-02 10:26:43

+0

@Oscar - 它不是這裏表的副本......只是指同一個表兩次。在這兩種情況下,我們都使用底層的'employee'表,只是將一個「副本」(閱讀)稱爲'ei',另一個表示爲'el',這樣查詢就可以使用同一張表兩次 – Captain 2014-10-02 11:47:36

+0

好的,謝謝,我會嘗試的。 – Oscar 2014-10-02 12:41:47