2011-10-25 5 views
11

मैं इस तरह के एसक्यूएल सर्वर में दो SELECT स्टेटमेंट्स है:दो चयन विवरणों के बीच SQL सर्वर में बाएं जॉइन कैसे करें?

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

मैं पर [UserID] विशेषता और [TailUser] विशेषता इन दोनों का चयन करें बयानों के बीच में शामिल हों एक वाम प्रदर्शन करने के लिए चाहते हैं। मैं पहली क्वेरी में संबंधित रिकॉर्ड्स और अनुपस्थित रिकॉर्ड के लिए कुल मूल्य के साथ दूसरे प्रश्न में मौजूदा रिकॉर्ड में शामिल होना चाहता हूं। मैं यह कैसे कर सकता हूँ?

उत्तर

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

'WHERE' का उपयोग न करें, यह' बाएं जॉइन 'को रद्द करता है। उपयोग करें: 'user.userid = edge.tailuser और edge.headuser = 5043' –

+0

@ypercube आह, अच्छी पकड़! सुधार के लिए धन्यवाद, यह तय है। –

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

इस प्रयास करें:

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

या

AND edge.HeadUser=5043 

बजाय कहां की clausule।