SQL выборка списка диалогов

SK
На сайте с 31.08.2007
Offline
81
903

Допустим есть такие записи

по сути это 3 диалога пользователя ID 1 с тремя пользователями (ID 2,3,4)

как сделать выборка 3 записей, где будет ID от кого, текст последнего (по дате или ID) сообщения

обычный SELECT * FROM `dialog` WHERE (`from_id`=1 OR `to_id`=1) GROUP... некатит, тут надо как-то сгрупировать по ID=1

подскажите как это всё сделать 1 запросом

Нужен перенос информации? Информеры на сайт? Сграбить контент? Создать базу товаров? Изготовление любых парсеров! (/ru/forum/836197)
IL
На сайте с 20.04.2007
Offline
435
#1
Silent_Kill:
как это всё сделать 1 запросом

1. зачем самого себя загонять в рамки? 2 запроса - не? В крайнем случае UNION

2. обычный where group катит... с примерно таким извращением

GROUP by IF(from_user=1,to_user,from_user)

Только надо не

сгрупировать по ID=1

а сгруппировать по ID <>1

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
SK
На сайте с 31.08.2007
Offline
81
#2

Спасибо, это помогло

SELECT * FROM `dialog` WHERE (`from_user`=1 OR `to_user`=1) GROUP BY IF (`from_user`=1,`to_user`,`from_user`)

я чтото даже не знал про условия в mysql.... самое интересное в инете вообще условия в sql плохо расписаны (или я плохо искал)

а сгруппировать по ID <>1

ну тут никак, поля же 2

IL
На сайте с 20.04.2007
Offline
435
#3
Silent_Kill:
ну тут никак, поля же 2

Именно это и делается в указанном GROUP BY - выбирается ID<>1 (при этом второй =1, т.к. WHERE) и по нему группируется.

SK
На сайте с 31.08.2007
Offline
81
#4

так, а теперь другая проблема....

сортирую ORDER BY `dt` DESC например и получается что он сортирует уже отобранные записи (что тоже кстати надо)

а как в группе отобрать?

т.е. чтото типа MAX(`dt`) только чтобы не только максимальный `dt` а вся запись где максимальный `dt` выбиралась

---------- Добавлено 05.11.2012 в 21:59 ----------

в общем ничего лучше чем выбирать MAX (`id`) и потом для каждой записи выбор по ID

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий