2017-03-12 3 views
0

の名前よりもアルファベット順で低くなっているセールスマンを表示します。 http://www.w3resource.com/sql-exercises/subqueries/sql-subqueries-inventory-exercise-21.php
あなたは上記のリンク上の表の内容を見ることができます。 これは私のソリューションです:
SQLサブクエリ演習:名前はこれがw3resource上の問題である顧客

SELECT * 
FROM SALESMAN S WHERE S.SALESMAN_ID IN 
       (
        SELECT C.SALESMAN_ID 
        FROM CUSTOMER C 
        WHERE S.NAME < C.CUST_NAME 
       ); 

そして私はジャメHoogという名前だけで1 salemenを受け取りました。 これは、ウェブサイトのソリューションです:

SELECT * 
FROM salesman a 
WHERE EXISTS 
    (SELECT * 
    FROM CUSTOMER b 
    WHERE a.name < b.cust_name); 

彼らはEXISTSを使用して、私は私の解決策は、論理的にまだ彼らの溶液と同じだと思いますか、なぜ私は本当に理解していません。私の解決策に何が問題なのか教えてください。してください

+1

なぜ尋ねないのですか? – Strawberry

+0

'SALESMAN_ID'は2つのテーブル間の結合カラムですか? –

+0

@Tim Biegeleisenはい、それは –

答えて

0

2つのクエリは、私が説明しますが同じではありません。このデモが示すように、クエリやあなたの単一レコードの結果セットと間違って何も、ありません:

Rextester

このクエリは、名前彼自身より辞書順で大きい、少なくとも一人の顧客を持つすべてのセールスマンを見つけることです。セールスマンのJames Hoog氏だけが、顧客よりも辞書編集的に少ない名前を持っています。一方

は、ウェブサイトからのクエリが辞書順 Salesmanテーブル内の各レコードから以下のいずれかの 顧客(どちらか自分の または他の誰かの)されているセールスマンの名前を探しています。これは、クエリで使用されているものよりはるかに緩慢な要件です。ここでのロジックは、セールスマンの名前よりも大きな顧客が存在するセールスマンを保持することです。ピット・アレックスとポール・アダムだけがこの要件を満たしておらず、姓が「P」の文字やそれ以上の文字で始まる顧客はいません。

+0

ありがとう、私は問題を理解しています。私はそれに私のクエリを変更することができます: 'SELECT * SALESMAN FROM WHERE NAME

+0

はい、これは一目から、ウェブサイトからのクエリと一致する必要があります。このクエリは、私があなたに与えたデモリンクを使用してテストできます。 –

+1

さて、どうもありがとうございました。あなたの助けは私にとってとても貴重です。 –

関連する問題