2016-03-23 7 views
3

インストラクターのテーブルに参加: enter image description here自然を表

表を教える: enter image description here

このクエリを使用して、上記二つのテーブルにナチュラル・ジョインないとき:

Select name, course_id 
from instructor natural join teaches; 

出力は次のようになります: enter image description here

上記の例では、教師は左のテーブルで、正しいテーブルを教えていますか?なぜ結果リレーションの最初の行がSrinivasanを名前として持つのでしょうか?それは左のテーブル(インストラクター)の最初の行であり、あなたはそれを右のテーブルに結合しています(教える)ので、アインシュタインを持っていてはいけませんか?それでインストラクターの222222 IDを見て、それが教師のIDと一致するかどうかを確認し、12121(Wu)が教師のIDと一致するかどうかを調べます。私はこの出力表がどのように形成されているのか混乱していますか?

答えて

4

自然結合は、自動的に一致する行を決定するために各テーブルの列を選択します。 SQLは、同じ名前とタイプを持つ各テーブルの列を識別します。その後、これらの列の値が等しい行が一致する行として戻されます。

したがって、共通の列が選択されてソートされた後でなければ、この場合は - idで一致します。

したがって、最初の名前はSrinivasanであり、Einsteinではありません。

+0

ああ、最初にインストラクタテーブル(左)から共通の列IDをソートし、次に教師テーブル(右)と自然結合を実行しますか?しかし、ID列の指導表には並べ替えがありませんか?それとも、ティーチングテーブルのID列もソートされますか? – LP496