У меня есть запрос с объединением между двумя таблицами, который работает, как и ожидалось, но теперь я хотел бы переопределить, чтобы присоединиться, потому что у меня есть таблица с полем, которое может объединяться между этими двумя таблицами. Теперь, когда я пишу оператор соединения, я был удивлен, что он получил таблицу с максимальным значением и применил вторую таблицу
. Давайте посмотрим на код:
declare @Users table (UserId int, UserName nvarchar(50))
insert into @Users(UserId,UserName) values
(1,'Test users 1'),
(2,'Blah user')
declare @Computers table (ComputerId int, UserId int, ComputerName nvarchar(50))
insert into @Computers (ComputerId, UserId,ComputerName)
values (3, 1, 'Test comp 3'),
(5, 2, 'blah 1'),
(6, 2, 'blah 1')
declare @ComputersDeleted table (ComputerId int, UserId int, ComputerName nvarchar(50))
insert into @ComputersDeleted (ComputerId, UserId,ComputerName)
values (1, 1, 'Test comp 1'),
(2, 1, 'Test comp 2'),
(4, 2, 'blah')
-- excpected result
select * from @Computers where UserId = 1
union
select * from @ComputersDeleted where UserId = 1
select * from @Users u
left join @Computers c on c.UserId = u.UserId
left join @ComputersDeleted cd on cd.UserId = u.UserId
where u.UserId = 1
как написатьвступать в союз в этом случае? Я хотел бы получить такие данные
table 1, table 2 , table 3
data1 NULL data3
data1 NULL data3
data1 data2 NULL
вместо того, чтобы работать сейчас, как применить
table 1, table 2 , table 3
data1 data2 data3
data1 data2 data3