Что произойдет, если я естественным образом присоединюсь к обеим этим таблицам?

У меня есть две таблицы. Сотрудник и менеджер. Таблица сотрудников хранит информацию обо всех сотрудниках компании. Таблица менеджеров показывает, какие сотрудники работают под каким менеджером. Менеджер также является сотрудником компании. Таблицы приведены ниже.

сотрудник(имя, город, улица)

менеджер(имя, имя_сотрудника)

Жирный шрифт означает, что они являются первичным ключом. Теперь дело в том, что в таблице менеджеров и имя, и имя сотрудника являются внешним ключом, ссылающимся на сотрудника. Итак, что произойдет, если я, естественно, присоединюсь к ним. Не будет ли проблем? После естественного присоединения к ним, чей город и улицу я увижу в финальном столе? руководителя или работника?


person odbhut.shei.chhele    schedule 15.12.2012    source источник
comment
Попробуйте, и вы увидите? SQLFiddle.com   -  person ApplePie    schedule 15.12.2012


Ответы (3)


Скорее всего, вы ничего не получите, если вам повезет, или мусор, если вам не повезет. Natural join сделал бы что-то вроде этого:

SELECT * FROM managers LEFT JOIN employees
         WHERE managers.name = employees.name

Natural join пытается использовать СТОЛБЦЫ С ОБЫЧНЫМИ ИМЕНАМИ.

Когда, как я предполагаю, вы хотите что-то вроде этого:

SELECT * FROM managers LEFT JOIN employees
         WHERE managers.employee_name = employees.name
person Mike G    schedule 15.12.2012

Вы получите список всех менеджеров города, улицы и имени сотрудника.

Имя, город, улица, имя_сотрудника

person user1903020    schedule 15.12.2012

В противном случае, присоединяйтесь, я предлагаю просмотреть архитектуру вашей БД. Если в таблице менеджеров имя PK, у вас не может быть более одного сотрудника с одним и тем же менеджером.

person Flávio Silveira    schedule 15.12.2012