ФорумРазработкаУстановка и администрирование ПОСерверы баз данных → Выбрать максимальную строку в сгруппированном множестве

Выбрать максимальную строку в сгруппированном множестве

  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 7 июля 2011 г. 12:42

    Есть такое t

    id, title, n
    1, a, 2
    2, b, 3
    2, b, 2
    3, c, 1
    3, c, 6

    вот я делаю
    SELECT * FROM t GROUP BY title
    и получаю допустим
    1, a, 2
    2, b, 2
    3, c, 6

    а мне нужно получить ряд с максимальным значением n в группе. Именно весь ряд а не само это максимальное значение в группе

    1, a, 2
    2, b, 3
    3, c, 6
  • Sinkler

    Сообщения: 8086 Репутация: N Группа: в ухо

    Spritz 7 июля 2011 г. 12:44, спустя 2 минуты

    что-то такое на фоксе делал… вроде решалось сортировкой
    Спустя 27 сек.
    ток все-таки это не для форума о ПО, имхо)))
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 7 июля 2011 г. 12:46, спустя 2 минуты 19 секунд

    оу, щи!
    перенесите плз сюды http://pyha.ru/forum/board/3.0 , под конец дня не заметил

    и еще желательно что б это потом можно было переписать на DQL второй доктрины)
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 7 июля 2011 г. 13:10, спустя 23 минуты 46 секунд

    в голову приходит только

    select * from (SELECT * FROM t ORDER BY n DESC) x GROUP BY title
    Спустя 27 сек.
    надо группировать уже отсортированную таблицу
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 7 июля 2011 г. 13:14, спустя 3 минуты 34 секунды

    http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/

    но сомневаюсь, что что-либо из этого можно будет переписать на DQL


    phpdude, таблица будет крупная с джоинами двух громадных таблиц
    Спустя 21 сек.
    это все та ебучая лента событий
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 7 июля 2011 г. 13:14, спустя 18 секунд

    phpdude, таблица будет громадная

    сказал как отрезал :-)

    а поточнее?

    Сапожник без сапог
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 7 июля 2011 г. 13:27, спустя 13 минут 21 секунду

    вот нахуй тебе редактировать разрешили, а?))))))))
    Сапожник без сапог
  • Sinkler

    Сообщения: 8086 Репутация: N Группа: в ухо

    Spritz 7 июля 2011 г. 13:31, спустя 3 минуты 29 секунд

    select * from (SELECT * FROM t ORDER BY n DESC) x GROUP BY title

    да, тож так было
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 7 июля 2011 г. 14:05, спустя 33 минуты 50 секунд

    это все та ебучая лента событий

    а вообще

    ханить не в бд не катит?денормализация не катит?
    Сапожник без сапог
  • Sinkler

    Сообщения: 8086 Репутация: N Группа: в ухо

    Spritz 7 июля 2011 г. 14:11, спустя 6 минут 19 секунд

    денормализация

    это слово меня преследует…
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 7 июля 2011 г. 16:32, спустя 2 часа 20 минут 41 секунду


    Есть такое t

    id, title, n
    1, a, 2
    2, b, 3
    2, b, 2
    3, c, 1
    3, c, 6

    вот я делаю
    SELECT * FROM t GROUP BY title
    и получаю допустим
    1, a, 2
    2, b, 2
    3, c, 6

    а мне нужно получить ряд с максимальным значением n в группе. Именно весь ряд а не само это максимальное значение в группе

    1, a, 2
    2, b, 3
    3, c, 6


    интересно а что у тебя тут является ключом? полагаю таблица не по правилам сделана
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 7 июля 2011 г. 16:37, спустя 5 минут 37 секунд


    вот нахуй тебе редактировать разрешили, а?))))))))


    хе-хе. Ну там так:
    таблица с событиями - то, что в ленте выводится. Это все добавления в друзья, написания комментариев к встречам, спортивным встречам, блогозаписям, …
    таблица с каналами. Канал - это челокек/встреча/спортивная встреча/блогозапись
    каналы2события - одно и то же событие вещать в несколько каналов может
    пользователи2каналы - человек подписывается на каналы


    таблицы крупные будут.


    интересно а что у тебя тут является ключом? полагаю таблица не по правилам сделана

    да похую что является ключом. Что скажешь - то и сделаю ключом. Вопрос не в этом.
    Спустя 56 сек.
    ханить не в бд не катит?денормализация не катит?

    ну потом монго может быть будет. Но пока нужно сделать так
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 7 июля 2011 г. 16:41, спустя 4 минуты 2 секунды

    SELECT MAX(n),title,id FROM test GROUP BY title
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 7 июля 2011 г. 16:50, спустя 8 минут 14 секунд

    ну заебись, че. Вот только
    мне нужно получить ряд с максимальным значением n в группе. Именно весь ряд а не само это максимальное значение в группе

  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 7 июля 2011 г. 16:51, спустя 1 минуту 21 секунду


    SELECT MAX(n),title,id FROM test GROUP BY title
    сканает если не нужны id связаные с n. Я так понял что нужны "запись" как выразился главчлен, ну а это подразумевает связь.

    таблицы крупные будут.

    зря затеяли, придумывайте другой способ хранения, советую пока не поздно :-)

    хотя для бета версии конечно покатит, монго тоже не спасет, скорость у него насколько я почитал немногим выше мускуля. там плюс в маппинге + объектно ориентированности базы.

    тут надо чтото оля сервер очередей.
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!