За последние 24 часа нас посетили 66949 программистов и 1640 роботов. Сейчас ищут 899 программистов ...

помогите с запросом

Тема в разделе "MySQL", создана пользователем ckjet, 11 окт 2011.

  1. ckjet

    ckjet Активный пользователь

    С нами с:
    6 апр 2011
    Сообщения:
    172
    Симпатии:
    2
    имеются поля: id user_id addresser_id created_at viewed_at group_id message

    Необходимо вывести по 1 сообщению с каждого group_id с такой сортировкой - внутри группы сортировка по created_at а сами группы с сортировкой по viewed_at, created_at - тоесть приоритет у viewed_at
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Полагаю более опытные форумчане смогут написать что-то лучшее, а я подвис на этом вопросе. Получилось так:
    [sql]SELECT `t1`.* FROM `my_table` AS `t1`
    JOIN (SELECT `group_id`, MIN(`created_at`) AS `min_created_at` FROM `my_table` GROUP BY `group_id`) AS `t2`
    ON `t1`.`group_id` = `t2`.`group_id` AND `t1`.`created_at` = `t2`.`min_created_at`
    ORDER BY `viewed_at`, `created_at`;[/sql]
    Вроде работает правильно, на сколько я понял задачу. Но, возможно, хрень тормозная получится.