从关系表中获取数据

时间:2013-10-29 01:28:19

标签: sql sql-server

我的数据库中有以下表格。

呼叫:

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

PersonNotes:

ID   NoteID  PersonID
1    1       1
1    2       1

现在我需要根据人员ID从这些表中获取数据。我能够从2个表中获取数据,例如Notes和PersonNotes,但是我无法从这些表中获取组合数据。这应该是结果。

结果:

PersonID    Note    Call
1           Note1   Call1
1           Note2   Call2

请建议

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果您使用的是MS SQL服务器,如果不太详细,可以在dbo.calls.ID,dbo.notes.id,dbo.person.id等上使用左连接。否则你确定你不能只写一份报告吗?