Используя PHP и MySQL, я создаю систему обмена сообщениями Inbox, и она работает, но в каком-то смысле она возвращает удвоения. Входящие должны отображать разговор между двумя людьми с последним отправленным сообщением. Пользователь может нажать на это последнее сообщение и пообщаться с пользователем. Сейчас в папке «Входящие» отображается последнее сообщение, отправленное пользователем 1, если пользователь 1 сообщает пользователю 2, и он показывает последнее сообщение, если пользователь 2 messaged user 1. Если пользователь 1 или пользователь 2 сообщают друг другу, я просто хочу показать LAST, отправленное одним из них. Вот мой запрос, я хотел сделать это самостоятельно, но мои навыки SQL немного притупили.MySQL Входящие запросы, возвращающие двойные результаты
Наконец, вот запрос:
SELECT m.body, m.createddate,m.recuserid,m.createduserid,
FROM(SELECT MAX(createddate) as maxdate
from
messages
group by recuserid,createduserid
) c
inner join messages m on m.createddate = c.maxdate
inner join users u on u.userid = m.createduserid
WHERE createduserid = 143 OR recuserid = 143
А вот результаты, которые она возвращает :
Как вы может видеть, он возвращает любое сообщение, которое вовлекает пользователя 143 любым способом. Мои желаемые результаты состоят в том, чтобы возвращать только 1-й и 3-й строки.
Вы получаете то, о чем просили. строки, где createduserid равно 143, ** OR **, где recuserid равно 143. –
@xQbert возвращает третий результат, но не возвращает первый (я сам передаю сообщения) – triswill227
@MarcB Я это понимаю, но как это исправить? – triswill227