2016-03-23 16 views
0

私は、スキーマがある場合:複数のSELECT文

タイプ(A、B、C、D)

名(E、B、G)

Iをタイプの 'D'が共有 'B'を使用してアクセスする数字より大きい結果の名前の 'E'をすべて検索しようとしています。

私は、次のような複数のSELECT文を持っているかを理解しようとしています:

SELECT e FROM Name WHERE b = (SELECT b FROM Type WHERE d > 1); 

を誰かが構文エラーを説明することができ、どのようにSELECT文を入れ子に行うのか、私は2つのテーブルを結合する必要があります。

おかげ

+0

'= 'は単一の値を比較します。あなたの '(select b)'は** MULTIPLE **の値を返すことができます。つまり、あなたは 'どこにIN(....)'をしなければなりません。 –

答えて

2

このシンプルなINNER JOIN操作を使用して達成することができます。

SELECT DISTINCT n.e 
FROM Name AS n 
INNER JOIN Type AS t ON n.b = t.b 
WHERE t.d > 1 

ます。またEXISTS使用することができます。

SELECT n.e 
FROM Name AS n 
WHERE EXISTS (SELECT 1 
       FROM Type AS t 
       WHERE n.b = t.b AND t.d > 1) 
0

を私はあなたの代わりに=

INを使用したいと思います
SELECT e FROM Name WHERE b IN (SELECT b FROM Type WHERE d > 1); 

=値を別の値と比較する。
INを参照して、値が複数の値のリストを白くしているかどうかを確認します。

+0

結合を使用するほうがずっと良いでしょう。 –

+0

@IkeWalkernは 'JOIN'を使ってクエリを間違ってしまうのが良いですか? – mongotop

+1

私は尋ねることができる場合はなぜジョインですか? – Pipeline

関連する問題