我有dbo.Users表
Id, Name 1, John 2, Mary 3, Michael
然后我有dbo.Phones表
Id, Phonenumber 10, 1234 11, 5555
然后我有dbo.Relationship表
Id, ChildId 1, 10 2, 11
我如何进行查询返回
Id, Name, Phonenumber 1, John, 1234 2, Mary, 5555 3, Michael, NULL
这就是我到目前为止所得到的。
SELECT u.Id, u.Name, p.Phonenumber FROM dbo.Users as u LEFT JOIN dbo.Phones as p -- Something
SQL Fiddle
在这里,将“关系”表视为“用户”和“电话”表之间的中间人。它与映射表是多对多关系。将您的用户加入到关系中,然后将其加入到您的电话中。
SELECT u.Id ,u.Name ,p.PhoneNumber FROM dbo.Users u LEFT JOIN dbo.Relationship r ON r.Id = u.Id LEFT JOIN dbo.Phones p ON p.Id = r.ChildId
可以这样想:
用户: 您好关系,我的UserId = 1,我对那个UserId有什么电话ID?
关系: 嗨,用户。我的PhoneId = 10。我将与电话交谈,看看电话号码是多少。
电话: 嗨,人际关系!我有适合您的PhoneNumber 1234。它与您给我的PhoneId匹配。