2012-05-05 1 views
-7
SELECT c1.address 
FROM users c1, users c2 
WHERE c1.address = c2.address 
AND c2.first_name = 'John' 

3行目が何をしているのか分かりません。このクエリは2つの別々のアドレスを返すので、私はそれを理解しません。タプル変数 - 誰かが次のSQL文を私に説明することができます

私には何が欠けていますか?

編集:

の表は、ユーザーの3つのレコードを持っています。それらのユーザーの二人は同じ最初の名前「ジョン

編集を共有:また

、なぜ我々は代わりに以下の、これを実行する必要がありますか?

SELECT address 
FROM users 
WHERE first_name = 'John' 
+0

私が知る限り、2つではなく1つのアドレスを返します。 –

+1

クエリのテーブル構造+出力を表示します。 – gdoron

+3

あなたはいくつかの基本的なSQLチュートリアルを行う必要があります、それはここで尋ねるよりもはるかにあなたを助けます。 – gdoron

答えて

2

addressのみを選択していることを考慮すると、これらの選択肢は同等です。 2つの "Johns"があるため、2つのアドレスを返します。

住所に参加すると、あなたが誰であるかを把握することができます。その他は、ジョンと一緒に住んでいます。たとえば、

SELECT c2.first_name 
FROM users c1, users c2 
WHERE c1.address = c2.address 
AND c1.first_name = 'John' 
AND c2.first_name != 'John' 

は、「John」と一緒に住むすべての人の名前を示します。

+0

「アドレスを選択するだけ」とは何か? – code511788465541441

+0

@ user521180:名前などの他のフィールドを無効にします。 –

+0

アドレスと名前を選択しても、同じことが返されます。だから、c1.addressなどのようにするのは何ですか? – code511788465541441

関連する問題