Есть таблица users: id, name И таблица messages: id, user_id, rec_id, message Где: user_id - отправитель rec_id - получатель Мне нужно получить id всех пользователей с которыми вел переписку пользователей с id = 1
зачем приписывать _id если ежу понятно, что это id =) забей Код (Text): И таблица messages: id, from, to, sent, text OR - или. WHERE `from` = 1 OR `to` = 1
А как это реализовать через OR? Вот мой вариант SELECT * FROM users WHERE id IN (SELECT CONCAT_WS(from, to) as id FROM messages WHERE from = МОЙ_ID OR to = МОЙ_ИД) ORDER BY id DESC;
Код (PHP): SELECT u.* FROM users AS u INNER JOIN ( SELECT from_id AS id FROM messages WHERE to_id=1 UNION SELECT to_id AS id FROM messages WHERE from_id=1 ) AS m ON m.id=u.id UNION в отличие от WHERE … OR … позволяет серверу БД использовать индексы (там где они есть). алсо, после получения выборки, UNION в отличие от WHERE … OR … или UNION ALL добивается уникальности результата, что нам будет кстати!