2013-10-29 98 views
0

我的數據庫中有以下表格。從關係表中獲取數據

電話:

ID Name 
1 Call1 
2 Call2 
3 Call3 

注:

ID Name 
1 Note 1 
2 Note 2 

人:

ID Name 
1 Andrew 

PersonCalls:

ID CallID PersonID 
1 1  1 
2 2  1 

人事記錄:

ID NoteID PersonID 
1 1  1 
1 2  1 

現在我需要根據個人id從這些表中獲取數據。我能夠從2個表中獲取數據,例如Notes和PersonNotes,但我無法從這些表中獲取組合數據。這應該是結果。

結果:

PersonID Note Call 
1   Note1 Call1 
1   Note2 Call2 

請建議

感謝

+0

你有什麼結果的要求?什麼是邏輯?它應該是什麼樣子? –

+0

我的要求就是要造成這樣 PERSONID注呼叫 1注1 CALL1 1注2 CALL2 1 ----- Call3 – JSHunjan

回答

2

使用加入即:內部連接):

select distinct p.ID as PersonID, n.Name as Note, c.Name as Call from Person p 
inner join PersonCalls pc on p.ID = pc.PersonID 
inner join PersonNotes pn on p.ID = pn.PersonID 
inner join Calls c on pc.CallID = c.ID 
inner join Notes n on pn.NoteID = n.ID 
+0

是什麼讓你這麼認爲嗎?例如,在'PersonNotes'和'PersonCalls'中,** foreign **鍵似乎是'PersonID'。 –

+0

你走了。由於之前桌子很亂,我無法弄清楚是什麼。 –

+0

根據實際OP的要求,也有可能部分或全部'JOIN's需要是'OUTER'。 –

0

沒有得到太詳細,您可以使用左連接上dbo.calls.ID,dbo.notes.id,dbo.person .id等,如果您使用MS SQL服務器。否則,你確定你不能只寫報告嗎?