我有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
答案 0 :(得分:4)
将Relationship表视为此处用户和电话表之间的中间人。它是一个带有映射表的many-to-many relationship。加入您的用户关系,然后加入与您的电话的关系。
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
想想它:
用户: Hello Relationship,我有UserId = 1,我对UserId有什么PhoneIds?
关系:嗨用户。我有PhoneId = 10。我会和Phones谈谈,看看这个号码是什么。
手机:嗨关系!我有PhoneNumber 1234给你。它与你给我的PhoneId相匹配。
答案 1 :(得分:-1)
试试这个:
Select u.Id, u.Name, p.Phonenumber
From
Users u
Left join Relationship r on r.Id = u.Id
Left join Phones p on r.ChildId = p.Phonenumber
答案 2 :(得分:-2)
将他们加入id字段。我会根据需要使用内连接
SELECT distinct u.Id, u.Name, p.Phonenumber
FROM dbo.Users as u
LEFT JOIN dbo.Phones as p on u.id = p.id
或---
SELECT distinct u.Id, u.Name, p.Phonenumber
FROM dbo.Users as u
inner join T JOIN dbo.Phones as p on u.id = p.id
inner join dbo.relationship r on r.id = u.id
where----