Я кодирую чат с использованием 2 таблиц mysql. Одна из этих таблиц - это папка «Входящие», а другая - таблица сообщений.
Я хочу найти таблицу «user_mailboxes» из другой таблицы, принадлежащей кому-то другому, и отсортировать ее по группировке advert_id.
Я хочу, чтобы последнее отправленное сообщение было вверху и в указанном месте. Буду рад, если вы поможете.
Код SQL, который я использую:
SELECT *
FROM user_mailboxes
LEFT
JOIN mbox
ON mbox.id = user_mailboxes.message_id
WHERE (user_mailboxes.user = '$users['id']'
AND user_mailboxes.mailbox = 'Out')
|| (user_mailboxes.user = '$users['id']'
AND user_mailboxes.mailbox = 'In')
GROUP
BY user_mailboxes.advert_id
ORDER
BY mbox.created DESC
Я использую цикл Foreach. Результат:
user_mailboxes TABLE
mysql
CREATE TABLE `mbox` (
`id` int(100) NOT NULL,
`message` text COLLATE utf8_unicode_ci,
`sentby` int(100) DEFAULT NULL,
`sentto` int(100) DEFAULT NULL,
`created` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `mbox` (`id`, `message`, `sentby`, `sentto`, `created`) VALUES
(1, 'Hello!', 1, 4, '2019-10-25 00:25:38'),
(2, 'Last Messages How are you ?', 1, 4, '2019-10-25 00:26:14'),
(3, 'Welcome', 1, 2, '2019-10-25 00:26:45'),
(4, ':) last messages', 1, 2, '2019-10-25 00:27:02');
mbox TABLE
mysql
CREATE TABLE `user_mailboxes` (
`id` int(100) NOT NULL,
`user` int(100) DEFAULT NULL,
`mailbox` enum('Out','In') COLLATE utf8_unicode_ci DEFAULT NULL,
`message_id` int(100) DEFAULT NULL,
`advert_id` int(100) DEFAULT NULL,
`room_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `user_mailboxes` (`id`, `user`, `mailbox`, `message_id`, `advert_id`, `room_name`) VALUES
(1, 1, 'Out', 1, 67, '67-1'),
(2, 4, 'In', 1, 67, '67-1'),
(3, 1, 'Out', 2, 67, '67-1'),
(4, 4, 'In', 2, 67, '67-1'),
(5, 1, 'Out', 3, 1, '1-1'),
(6, 2, 'In', 3, 1, '1-1'),
(7, 1, 'Out', 4, 1, '1-1'),
(8, 2, 'In', 4, 1, '1-1');