Как объединить одну и ту же таблицу в разные строки в одном запросе - PullRequest
0 голосов
/ 19 октября 2011

Мне нужно исправить следующий запрос:

SELECT *
FROM message_treads
LEFT JOIN usernames ON usernames.uid=message_treads.uid_1
LEFT JOIN usernames ON usernames.uid=message_treads.uid_2

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

Ответы [ 2 ]

3 голосов
/ 19 октября 2011

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

SELECT *
FROM message_treads
LEFT JOIN usersnames ON usernames.uid IN (message_treads.uid_1, message_tread.uid_2)

Что касается псевдонимов, вы бы сделали это так:

SELECT *
FROM message_treads
LEFT JOIN usernames AS user1 ON user1.uid = message_treads.uid_1
LEFT JOIN usernames AS user2 ON user2.uid = message_treads.uid_2

Но это, вероятно, не то, что вы хотите, так как это вернет два набора столбцов из двойных таблиц имен пользователей. Первая версия выше вернет только один набор столбцов имени пользователя.

2 голосов
/ 19 октября 2011

Вы правы, вам нужно использовать псевдонимы так:

SELECT *
FROM message_treads
LEFT JOIN usernames uid1 ON uid1.uid=message_treads.uid_1
LEFT JOIN usernames uid2 ON uid2.uid=message_treads.uid_2 
...