2016-03-23 5 views
3

Instructor стол: enter image description hereNatural Join Tables

Преподает Таблица: enter image description here

Когда вы естественное соединение в двух таблицах выше, используя этот запрос:

Select name, course_id 
from instructor natural join teaches; 

Выход выглядит следующим образом : enter image description here

В приведенном выше примере инструктор левой таблицы и учит правой таблице? Почему первая строка в отношении результата имеет Srinivasan как имя. Разве у него нет Эйнштейна, так как это первая строка в левой таблице (инструктор), и вы присоединяетесь к ней с правой таблицей (учите)? Таким образом, он будет смотреть идентификатор 222222 от инструктора и посмотреть, соответствует ли он совпадению идентификатора, затем он будет смотреть, соответствует ли 12121 (Wu) идентификатору из преподавателя, и так далее. Я смущен тем, как формируется эта выходная таблица?

ответ

4

Естественное соединение автоматически выбирает столбцы из каждой таблицы для использования при определении совпадающих строк. SQL идентифицирует столбцы в каждой таблице с одинаковым именем и типом; После этого строки, в которых значения этих столбцов равны, возвращаются как соответствующие строки.

Итак, только после того, как общий столбец выбран и отсортирован, в этом случае - идентификатор, происходит совпадение.

Следовательно, первое имя - это Шринивасан, а не Эйнштейн.

+0

О, так он сначала сортирует общий идентификатор столбца из таблицы инструктора (слева), а затем выполняет естественное соединение с таблицей инструкций (справа)? Но нет никакой таблицы в таблице инструкций в столбце ID? Или сортируется ли столбец идентификатора в таблице инструкций? – LP496