2011-10-25 19 views
11

Tengo dos instrucciones SELECT de SQL Server como estos:¿Cómo realizar una unión IZQUIERDA en SQL Server entre dos instrucciones SELECT?

(SELECT [UserID] FROM [User]) 
(SELECT [TailUser], [Weight] FROM [Edge] WHERE [HeadUser] = 5043) 

Quiero realizar un LEFT JOIN entre estas dos instrucciones SELECT en el atributo [ID de usuario] y el atributo [TailUser]. Deseo unir los registros existentes en la segunda consulta con los registros correspondientes en la primera consulta y el valor NULL para los registros ausentes. ¿Cómo puedo hacer esto?

Respuesta

42
SELECT * FROM 
(SELECT [UserID] FROM [User]) a 
LEFT JOIN (SELECT [TailUser], [Weight] FROM [Edge] WHERE [HeadUser] = 5043) b 
ON a.UserId = b.TailUser 
1
select * 
from user 
left join edge 
on user.userid = edge.tailuser 
and edge.headuser = 5043 
+2

No utilice 'WHERE', cancela' LEFT JOIN'. Uso: 'ON user.userid = edge.tailuser Y edge.headuser = 5043' –

+0

@ypercube ah, ¡buen truco! Gracias por la corrección, está arreglado. –

1
SELECT [UserID] FROM [User] u LEFT JOIN (
SELECT [TailUser], [Weight] FROM [Edge] WHERE [HeadUser] = 5043) t on t.TailUser=u.USerID 
0

Prueba esto:

SELECT user.userID, edge.TailUser, edge.Weight 
FROM user 
LEFT JOIN edge ON edge.HeadUser = User.UserID 
WHERE edge.HeadUser=5043 

O

AND edge.HeadUser=5043 

en lugar de DONDE clausula.

Cuestiones relacionadas