2015-04-06 2 views
0

Итак, у меня есть 2 таблицы; таблицу задач и таблицу сотрудников.MySQL 2 внешних ключа к одному и тому же первичному ключу

Задача создается сотрудником и поддерживает идентификатор сотрудника, который создает его как creator_id.

Задача назначается сотруднику и поддерживает идентификатор сотрудника, которому он назначен как ответственный_ид.

Создатель задачи и работник, которому он назначен, могут быть разными людьми.

Как написать инструкцию select, которая позволяет мне отображать полные имена как сотрудника, создавшего задачу, так и сотрудника, которому она присвоена.

Я думаю, что это может выглядеть примерно так:

SELECT Task.Description, Employee1.name, Employee2.name 
FROM Task, Employee Employee1, Employee Employee2 
WHERE Task.creator_id = Employee1.id 
AND Task.responsible_id = Employee2.id; 

я попытался вариации этого, но он возвращает либо ошибки, либо попадает лимит памяти.

Куда я иду не так?

+0

Какие ошибки вы получаете? Можете ли вы обновить вопрос с помощью небольшого набора данных, который вызывает ошибки? – jpw

ответ

0

Из вашего описания запроса является правильным, но вы должны рассмотреть переписывание его использовать явное ANSI соединяет:

SELECT Task.Description, Employee1.name, Employee2.name 
FROM Task 
JOIN Employee Employee1 ON Task.creator_id = Employee1.id 
JOIN Employee Employee2 ON Task.responsible_id = Employee2.id; 

Sample SQL Fiddle

Смежные вопросы