2015-05-26 3 views
1

Я пытаюсь это:MySql присоединиться к той же таблице дважды

select 
audit_log_entries.created_at, 
audit_log_orig_term_types.name as originator, 
audit_log_orig_term_types.name as terminator 
from audit_log_entries 
join audit_log_orig_term_types on audit_log_entries.originator_type_id = audit_log_orig_term_types.id 
join audit_log_orig_term_types on audit_log_entries.terminator_type_id = audit_log_orig_term_types.id; 

Я думаю, что цель ясна, я хочу как имена для оригинатора и терминатора. У меня есть их идентификаторы в первой таблице и имена в другой таблице.

Я получаю сообщение об ошибке от этого: ERROR 1066 (42000): Not unique table/alias: 'audit_log_orig_term_types'

где ошибка в синтаксисе?

ответ

2

Вы можете сделать так:

select 
audit_log_entries.created_at, 
audit1.name as originator, 
audit2.name as terminator 
from audit_log_entries 
join audit_log_orig_term_types audit1 on audit_log_entries.originator_type_id = audit1.id 
join audit_log_orig_term_types audit2 on audit_log_entries.terminator_type_id = audit2.id; 
1

Вы должны псевдоним таблицы:

join audit_log_orig_term_types AS alias1 on audit_log_entries.originator_type_id = alias1.id 
           ^^^^^^^^^           ^^^^^^ 
join audit_log_orig_term_types AS alias2 on audit_log_entries.terminator_type_id = alias2.id; 
0

использовать псевдоним для соединяемых таблиц:

Join table1 as t1 on t1.Id = [...] 
Смежные вопросы