2013-07-02 4 views
0

У меня есть следующие схемы базы данных: http://pastebin.com/tET8Wj17MySQL внутреннее соединение на той же таблице

Я хотел бы сделать запрос, получать все сообщения, когда мой user_id равно ресиверу или sender_id, но также принимает и принести id_parent сообщение.

Я думал об использовании INNER JOIN, но не могу заставить это работать с той же таблицей.

+1

Используйте sqlfiddle вместо Pastebin - гораздо дружелюбнее для такого рода вещи. – Strawberry

+0

Вот он в SQLfiddle (нет возможности делать ограничения в SQLfiddle, насколько я могу видеть): http://sqlfiddle.com/#!2/db149 – nrathaus

ответ

2

Вы можете использовать INNER JOIN на одной и той же таблице - вам просто нужно дать каждой таблице отдельный псевдоним.

SELECT t1.*, t2.* 
FROM table1 as t1 
INNER JOIN table1 as t2 ON t1.someField = t2.someField 

Reflexive присоединяется, как это может вызвать проблемы с производительностью - будьте осторожны и убедитесь, что вы в состоянии держать ваше приложение производительным.

+0

Спасибо, очень помог! –

2

Самостоятельно присоединиться достаточно просто, используя псевдоним

SELECT * 
FROM table1 a 
INNER JOIN table1 b 
ON a.id = b.parent_id 
Смежные вопросы