Мне нужно разработать приложение чата в php, для этого я создал две таблицы, которым нравятся пользователи и сообщения. каждая информация пользователя будет сохранена в таблице пользователей, и каждое сообщение будет сохранено в таблице сообщений. Я сделал часть сохранения, она работает нормально. Теперь мне нужно отображать сообщения. Так что согласно моему требованию.Проблема с порядком и группой с помощью двух внешних ключей в одной таблице
Когда какой-либо пользователь входит в свой портал, он сможет увидеть список последних посланных пользователей. И если он хочет сообщить кому-либо из других пользователей, он просто нажмет на него профиль pic, чем откроется панель сообщений. До сих пор я все закончил.
Но мой вопрос мне нужно отобразить
последний список пользователей обменивались сообщениями,
в этом мне нужно, чтобы показать пользователю имя, фотографию, последнее сообщение, дата последнего сообщения.
И еще одно условие - мне нужно сначала отобразить список, как и последний посланный пользователь.
Я пытался разными способами, но я получил список пользователей с первым сообщением я не хочу, так что мне нужно последнее сообщение для этого пользователя
Моих таблиц
таблицы пользователей
uid | firstname | email | mobile
---------------------------------------------
1 | kumar | [email protected] |
----------------------------------------------
2 | jack | [email protected] | 8876543216
----------------------------------------------
3 | rams | [email protected] | 7876543215
----------------------------------------------
4 | devid | [email protected] | 9876543220
----------------------------------------------
5 | joe | [email protected] | 8876543212
----------------------------------------------
сообщений столик
mid| from_id | to_id | message | created_at
----------------------------------------------------------------
1 | 1 | 2 | hello jack | 2017-02-03 09:00:52
----------------------------------------------------------------
2 | 2 | 1 | hi kumar | 2017-02-03 09:10:30
----------------------------------------------------------------
3 | 2 | 3 | ram where are you | 2017-02-03 09:15:02
----------------------------------------------------------------
4 | 3 | 2 | at home | 2017-02-03 09:35:20
----------------------------------------------------------------
5 | 1 | 2 | hello how are you | 2017-02-03 09:42:55
----------------------------------------------------------------
6 | 4 | 2 | good morning | 2017-02-03 09:50:45
----------------------------------------------------------------
8 | 1 | 3 | hi | 2017-02-03 09:54:22
----------------------------------------------------------------
7 | 3 | 1 | hello kumar | 2017-02-03 09:58:38
----------------------------------------------------------------
Например я вошли в систему Кумар (UID = 1)
Ожидаемый результат:
firstname | message | mid | uid
-----------------------------------------
rams | hello kumar | 7 | 3
-----------------------------------------
jack | hello how are you | 5 | 2
-----------------------------------------
Я попытался, как это:
SELECT DISTINCT
`u`.`firstname`,
`u`.`profile_photo`,
`u`.`uid`,
`u2`.`firstname`,
`u2`.`profile_photo`,
`u2`.`uid`,
`message`,
`messages`.`created_at`,
`messages`.`from_id`,
`messages`.`to_id`,
`messages`.`mid`
FROM
`messages`
INNER JOIN
`users` AS `u` ON `u`.`uid` = `messages`.`from_id`
INNER JOIN
`users` AS `u2` ON `u2`.`uid` = `messages`.`to_id`
WHERE
(from_id = 1 OR to_id = 1)
GROUP BY
`u`.`uid`,
`u2`.`uid`
ORDER BY
`messages`.`mid` DESC
Но есть выход, как этот
firstname | message | mid | uid
-----------------------------------------
jack | hello jack | 1 | 2
-----------------------------------------
rams | hi | 5 | 2
-----------------------------------------
Заранее благодарна
Вы должны делать отдельные запросы для сообщений от пользователя и к пользователю, затем объедините их с UNION. – Barmar
Есть сотни вопросов о написании запросов для поиска разговоров. По какой-то причине вы не первый человек, пытающийся добавить обмен сообщениями на свой веб-сайт. – Barmar
Вы можете отправить любую ссылку ссылки @Barmar –