Uglik: в первом случае сработает то, что я написал в прошлом сообщении. Нужно просто использовать id юзеров, между которыми велась переписка, чтобы получить эту переписку. А чтобы вывести список пользователей, с которыми велась переписка, можно сделать примерно так: "select receiver_id as id from messages where sender_id = 1 union select sender_id from messages where receiver_id = 1", где 1 - id пользователя, для которого нужно получить список. Только тут синтаксис может быть разный для разных субд. Здесь я написал для postgres.
Uglik: да, в таком случае таблица channel не нужна. sender_id в messages идентифицирует отправителя, а receiver_id - получателя. Соответственно, чтобы получить переписку между двумя юзерами, нужно сделать "select * from messages where sender_id in ( 1, 2 ) and receiver_id in ( 1, 2 ) order by time" где 1 и 2 - id переписывающихся юзеров.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.