(SELECT * FROM `your_table` WHERE `idpoluch` = 1 ORDER BY `time` DESC LIMIT 1)UNION(SELECT * FROM `your_table` WHERE `idotpr` = 1 ORDER BY `time` DESC LIMIT 1)
Возможно надо сортировать не по времени, а по инкременационному полю? Если время не очень точное, либо если хочется, чтобы быстрее отрабатывал этот запрос - надо делать так.
Получится так:
(SELECT * FROM `your_table` WHERE `idpoluch` = 1 ORDER BY `id` DESC LIMIT 1)UNION(SELECT * FROM `your_table` WHERE `idotpr` = 1 ORDER BY `id` DESC LIMIT 1)
Но этот вариант выдаст только по 1 строке на отправление и на получение, независимо от того, сколько было собеседников. А я так понял, нужно выдать по паре строк на каждого собеседника? Я бы это сделал, ограничив поля, которые вывожу, и поставив DISTINCT (это будет вместо LIMIT 1)
(SELECT distinct id, idpoluch, idotpr FROM `your_table` WHERE `idpoluch` = 1 ORDER BY `id` DESC)UNION(SELECT distinct id, idpoluch, idotpr FROM `your_table` WHERE `idotpr` = 1 ORDER BY `id` DESC)
Для того, чтобы получить и текст сообщений, думаю, придется попотеть. Например можно из этого запроса создать view, а уже его объединять с таблицей.
Нет, так не получится
. id то везде разный
Придется, наверное, делать
хранимой процедурой. Не думаю что это проблема. Хранимые процедуры работают на раз-два. У самого на престу добавлена парочка, так что 100тыс товаров обрабатывает за 20 сек.