2014-12-23 5 views
0

Я пытаюсь перечислить некоторые данные в таблице. Данные поступают из базы данных, у меня есть 3 таблицы в моей БД.Объединение в ту же таблицу дважды

Я пытаюсь соединить эти 3 три таблицы в SQL-заявление так:

SELECT * FROM cases 
LEFT JOIN users ON cases.fk_supporter = users.user_id 
LEFT JOIN users ON cases.fk_creator = users.user_id 

fk_supporter является внешним ключом к пользователю, и поэтому является fk_creator, но не тот же пользователь , Как это сделать правильно?

+0

Я вижу две таблицы. – Strawberry

ответ

5

Вам нужно уникальный псевдоним для тех же таблиц в соединении

SELECT * FROM cases c 
LEFT JOIN users u1 ON c.fk_supporter = u1.user_id 
LEFT JOIN users u2 ON c.fk_creator = u2.user_id 
1

Вы просто должны дать ALIAS имя таблицы

Попробуйте это:

SELECT * 
FROM cases c 
LEFT JOIN users u1 ON c.fk_supporter = u1.user_id 
LEFT JOIN users u2 ON c.fk_creator = u2.user_id; 
0

Вы можете использовать ALIAS для вашего users стол:

SELECT * FROM cases 
LEFT JOIN users supporter ON cases.fk_supporter = supporter.user_id 
LEFT JOIN users creator ON cases.fk_creator = creator.user_id 
0

Может быть, вы бы что-то другое, чем левое соединение, попробуйте INNER JOIN с именем псевдонима, как @Saharsh и @Abhik mentioned- нравится:

SELECT * FROM cases C 
INNER JOIN users U1 ON C.fk_supporter = U1.user_id 
INNER JOIN users U2 ON C.fk_creator = U2.user_id 
0

Хорошо я получил это работает так:

SELECT 
supporter.usr AS supporter_usr, 
supporter.user_id as support_id, 
creator.usr AS creator_usr, 
creator.user_id as creator_id, 
cases.* FROM cases 


LEFT JOIN users AS supporter 
ON supporter.user_id = cases.fk_supporter 

LEFT JOIN users AS creator 
ON creator.user_id = cases.fk_creator 
Смежные вопросы