2016-04-22 17 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 is table 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')に変更し、WHERE CLAUSEは、c.ID =(SELECT foreignID FROM table2 WHERE a.Name = 'someName' ) –

関連する問題