[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: sql запрос диалогов пользователей
user_sasha
Всем доброго времени суток. опишу свою задачу.

Делаю систему сообщений на своем сайте. Система выглядит примерно как в вк. Уже написал вывод диалогА пользователя с другим пользователем, и отправка сообщений с этим пользователем.

Теперь мучаюсь с выводом всех переписок определенного пользователя. но... выводить все диалоги я хочу по последним сообщением.

К примеру:
сообщение 1: 1 пользователь - 2 пользователь - текст1 дата 0000-00-00 00:00:00
сообщение 2: 2 пользователь - 1 пользователь - текст2 дата 0000-00-00 00:00:01
сообщение 3: 1 пользователь - 2 пользователь - текст3 дата 0000-00-00 00:00:02
сообщение 4: 1 пользователь - 3 пользователь - текст4 дата 0000-00-00 00:00:10
сообщение 5: 3 пользователь - 1 пользователь - текст5 дата 0000-00-00 00:00:11
сообщение 6: 3 пользователь - 1 пользователь - текст6 дата 0000-00-00 00:00:12

в данном случае мне нужно вывести диалоги первого пользователя по последним сообщениям.
ТОЕСТЬ должно получиться так:
сообщение 3: 1 пользователь - 2 пользователь - текст3 дата 0000-00-00 00:00:02
сообщение 6: 3 пользователь -1 пользователь - текст6 дата 0000-00-00 00:00:12

Выкладываю скрин как это должно выглядеть

user posted image

Что пробовал я?
`users_1`='14' OR `users_2`='14' где 14 это id пользователя которому нужно вывести его диалоги с теми пользователями с которыми он общается
SELECT MAX(`data`), MAX(`text`), MAX(`id`),max(`users_1`),max(`users_2`) FROM `mes` WHERE `users_1`='14' OR `users_2`='14' GROUP BY CONCAT(LEAST(`users_1`,`users_2`),'-',GREATEST(`users_1`,`users_2`))


В данном случае он не выводит последний текст и users_1 и users_2.
Прошу помочь.. Ибо я уже сломал голову..
Valick
Цитата (user_sasha @ 20.01.2016 - 10:12)
CONCAT(LEAST(`users_1`,`users_2`),'-',GREATEST(`users_1`,`users_2`))

ой чую неладное с архитектурой БД
начинайте всегда вопрос с дампа таблицы

_____________
Стимулятор ~yoomoney - 41001303250491
user_sasha
Цитата (Valick @ 20.01.2016 - 11:22)
Цитата (user_sasha @ 20.01.2016 - 10:12)
CONCAT(LEAST(`users_1`,`users_2`),'-',GREATEST(`users_1`,`users_2`))

ой чую неладное с архитектурой БД

этот пример я взял с сайта.. когда пытался найти чтото похожее

users_1 - тот кто отправил сообщение
users_2 тот кто получил сообщение

вот дамп. но эта таблица создана в качестве теста.

-- phpMyAdmin SQL Dump
-- version 4.0.10.10
-- http://www.phpmyadmin.net
--
--
Хост: 127.0.0.1:3306
-- Время создания: Янв 20 2016 г., 10:31
-- Версия сервера: 5.5.45
-- Версия PHP: 5.3.29

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
--
База данных: `test`
--

-- --------------------------------------------------------

--
--
Структура таблицы `mes`
--

CREATE TABLE IF NOT EXISTS `mes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`data` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`text` text NOT NULL,
`users_1` int(11) NOT NULL,
`users_2` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ;

--
--
Дамп данных таблицы `mes`
--

INSERT INTO `mes` (`id`, `data`, `text`, `users_1`, `users_2`) VALUES
(9, '2016-01-19 07:15:58', 'текст 1', 1, 2),
(
10, '2016-01-19 07:03:34', 'текст 2', 2, 1),
(
11, '2016-01-19 07:21:15', 'текст 3', 4, 1),
(
12, '2016-01-19 07:18:27', 'fdsgrdgfds', 1, 4),
(
13, '2016-01-19 07:12:06', 'hfdshgrehrehrerh', 3, 1),
(
14, '2016-01-19 07:21:44', 'dszghsrfhgdjgfdgds', 1, 15),
(
15, '2016-01-19 07:21:44', 'fdhgdjgdjjt', 16, 1);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.