DECLARE @User TABLE
(
UserID INT NOT NULL,
Name VARCHAR(128)
)
DECLARE @User_Has_Toys TABLE
(
UserID INT NOT NULL,
ToyID INT NOT NULL
)
DECLARE @Toys TABLE
(
ToyID INT NOT NULL,
ToyName VARCHAR(128)
)
INSERT INTO @User (UserID, Name) VALUES (1,'Tom')
INSERT INTO @User (UserID, Name) VALUES (2,'Jim')
INSERT INTO @User (UserID, Name) VALUES (3,'Bob')
INSERT INTO @User_Has_Toys (UserID, ToyID) VALUES (1,2)
INSERT INTO @User_Has_Toys (UserID, ToyID) VALUES (1,3)
INSERT INTO @User_Has_Toys (UserID, ToyID) VALUES (1,4)
INSERT INTO @User_Has_Toys (UserID, ToyID) VALUES (2,2)
INSERT INTO @User_Has_Toys (UserID, ToyID) VALUES (2,4)
INSERT INTO @User_Has_Toys (UserID, ToyID) VALUES (3,4)
INSERT INTO @Toys (ToyID, ToyName) VALUES (1,'Toy1')
INSERT INTO @Toys (ToyID, ToyName) VALUES (2,'Toy2')
INSERT INTO @Toys (ToyID, ToyName) VALUES (3,'Toy3')
INSERT INTO @Toys (ToyID, ToyName) VALUES (4,'Toy4')
INSERT INTO @Toys (ToyID, ToyName) VALUES (5,'Toy5')
SELECT
u.UserID,
u.Name,
uht.ToyID,
t.ToyName
FROM @User AS u
LEFT JOIN @User_Has_Toys AS uht ON u.UserID = uht.UserID
LEFT JOIN @Toys AS t ON t.ToyID = uht.ToyID
WHERE uht.ToyID IN (2,4)
This one is good for SQL Server 2008 r2
don't mind the temp tables I've just used them to represent you're sample table.