Как вытащить последние данные из таблицы 2, используя LEFT JOIN с 2 таблицами? - PullRequest
0 голосов
/ 25 октября 2019

Я кодирую чат с использованием 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. Результат:

enter image description here

enter image description here


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');
...