Это приходит от 1 до нуля или многих, где у многих есть FK
Два подхода
приказ on
поставить outer
присоединиться к последнему
К сожалению, вы изменили имена таблиц. Я буду использовать более поздние имена.
declare @TableD TABLE (PeopleID int primary key, Name varchar(10));
INSERT INTO @TableD VALUES
(1, 'Chris')
, (2, 'Cliff')
, (3, 'Heather');
declare @TableA TABLE (ThingID int primary key, ThingName varchar(10))
INSERT INTO @TableA VALUES
(14, 'Bike')
, (17, 'Trailer')
, (18, 'Boat');
declare @TableF TABLE (PeopleID int, ThingID int, primary key (PeopleID, ThingID));
INSERT INTO @TableF VALUES
(1, 18)
, (1, 17)
, (2, 14);
SELECT D.Name, A.ThingName
FROM @TableD D
LEFT JOIN @TableF F
JOIN @TableA A
ON A.ThingID = F.ThingID
ON F.PeopleID = D.PeopleID
order by D.Name, A.ThingName;
SELECT D.Name, A.ThingName
FROM @TableF F
JOIN @TableA A
ON A.ThingID = F.ThingID
right join @TableD D
ON D.PeopleID = F.PeopleID
order by D.Name, A.ThingName;
Name ThingName
---------- ----------
Chris Boat
Chris Trailer
Cliff Bike
Heather NULL