根据关系表从多个表中获取结果

问题描述

在这里,将“关系”表视为“用户”和“电话”表之间的中间人。它与映射表是多对多关系。将您的用户加入到关系中,然后将其加入到您的电话中。

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匹配。

解决方法

我有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