2011-10-25 10 views
11

Ho due istruzioni SELECT in SQL Server come questi:Come eseguire un SINISTRA SINISTRO in SQL Server tra due istruzioni SELECT?

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

voglio eseguire un LEFT JOIN tra queste due istruzioni SELECT su [ID utente] attributo e l'attributo [TailUser]. Voglio unire i record esistenti nella seconda query con i record corrispondenti nella prima query e il valore NULL per i record assenti. Come posso fare questo?

risposta

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

Non utilizzare 'WHERE', annulla il' SINISTRA JOIN'. Usa: 'ON user.userid = edge.tailuser AND edge.headuser = 5043' –

+0

@ypercube ah, buona cattura! Grazie per la correzione, è stato risolto. –

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

Prova questa:

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 

anziché DOVE clausule.

Problemi correlati