2016-04-22 28 views
0

這是我的查詢的一部分,我在此查詢之前有一個聯合。我想在條件下選擇table1中的更多列。內部加入並選擇該表上的其他列

SELECT c.ID, c.Name, c.Position, c.Email, c.ContactNumber 
FROM table1 c 
INNER JOIN table2 a 
ON c.ID = (SELECT foreignID FROM table2 WHERE a.Name = 'someName') 
WHERE Dept = 'Something' --this will return nothing since in the inner join 
         --the condition returns a single column and it doesn't 
         --satisfy the WHERE Clause 

我要選擇滿足ID(工作)的人,包括東西部門人。有解決這個問題的另一種方法,或者我真的需要使用UNION來做到這一點。這會影響應用程序,特別是移動應用程序的性能嗎?

+0

部門是該表中的列?你不能只使用'ON c.ID = a.foreignID和Dept = Something'? –

+0

Dept來自表1 –

回答

1

如果我的理解您的要求正確,然後使用LEFT JOIN

SELECT c.ID, c.Name, c.Position, c.Email, c.ContactNumber 
FROM table1 c 
LEFT JOIN table2 a ON c.ID = a.foreignID AND a.Name = 'someName' 
WHERE Dept = 'Something' 
+0

uhm ,,這將返回滿足WHERE子句的列,但不返回JOIN部分中的人員。但是,謝謝,只是有點扭曲爲此:) –

+0

是'c.ID = a.foreignID'連接是否正確? –

+0

它是正確的,但我必須將其更改爲(SELECT foreignID FROM table2 WHERE a.Name ='someName'),並在滿足c.ID =(SELECT foreignID FROM table2 WHERE a.Name ='someName' ) –