ФорумРазработкаБазы данных → GROUP по лимиту

GROUP по лимиту

  • Josh

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

    Spritz 30 января 2009 г. 4:51

    Есть задача по написанию запроса:
    1.есть таблица
    ————————-
    |product_name|date_of_buy|
    ————————-
    | гайка | 12.11.1980|
    | гайка | 12.11.1980|
    | гайка | 13.11.1980|
    | болт | 11.11.1980|

    2. что требуется:
    2.1 Первая сортировка по первой букве имени что-то вроде (ORDER BY product_name DESC)
    2.2 Вторая сортировка количеству записей с этим именем
    2.3 Естественно GROUP BY product_name
    2.4 Вот основной гемор: при всём этом в группе на каждую букву только 20 топовых
    Возможно ли такое сделать средствами одного запроса?
  • phpdude

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

    Spritz 30 января 2009 г. 4:56, спустя 4 минуты 52 секунды


    Есть задача по написанию запроса:
    1.есть таблица
    ————————-
    |product_name|date_of_buy|
    ————————-
    | гайка | 12.11.1980|
    | гайка | 12.11.1980|
    | гайка | 13.11.1980|
    | болт | 11.11.1980|

    2. что требуется:
    2.1 Первая сортировка по первой букве имени что-то вроде (ORDER BY product_name DESC)
    2.2 Вторая сортировка количеству записей с этим именем
    2.3 Естественно GROUP BY product_name
    2.4 Вот основной гемор: при всём этом в группе на каждую букву только 20 топовых
    Возможно ли такое сделать средствами одного запроса?

    2.4 условие невозможно с этим всем совместить.
    Сапожник без сапог
  • Josh

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

    Spritz 30 января 2009 г. 5:00, спустя 4 минуты 16 секунд

    я думаю что как раз условие 2.4 надо вынести на первый план - не выгребатьже всё, а потом пыхой сортировать?
  • phpdude

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

    Spritz 30 января 2009 г. 5:16, спустя 15 минут 59 секунд


    я думаю что как раз условие 2.4 надо вынести на первый план - не выгребатьже всё, а потом пыхой сортировать?
    2/4 условие вообще не выполнить так просто))) это достаточно сложная операция, если я не торможу конечно. по хорошему надо вести учет букаф и ставить галочку мол эти элементы входят в топ-20 или не входят. легко организуеца на тригерах. :) ибо я на хабре с человеком по поводу таких запросов както аз 2ое суток общался))) решили что надо галку, иначе запрос аля битрикс получится. где будет уйма вложенных запросов + всякие if + limits и having'и.
    Сапожник без сапог
  • Josh

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

    Spritz 30 января 2009 г. 5:21, спустя 5 минут 2 секунды

    ПАРДОН - Я НЕ ТАК ВИДИМО ВЫРАЗИЛСЯ!!
    топ 20 подразумеваеться те продукты, которые уже отсортированы по первой букве, затем по количеству, тоесть топ, это те которых больше
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 30 января 2009 г. 5:44, спустя 23 минуты 8 секунд

    Уже пробовал подобное сделать (на категорию по две новости): решено было, что легче в два запроса.
  • Trej Gun

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

    Spritz 30 января 2009 г. 5:49, спустя 4 минуты 19 секунд

    Givi, почитай про UNION
  • Josh

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

    Spritz 30 января 2009 г. 5:57, спустя 8 минут 29 секунд


    Givi, почитай про UNION
    ты предлагаешь юнионом по каждой букве делать?
  • Trej Gun

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

    Spritz 30 января 2009 г. 7:43, спустя 1 час 45 минут 34 секунды

    Josh, тебе нет, ему да
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 30 января 2009 г. 8:17, спустя 34 минуты 30 секунд

    CTAPbIu_MABP
    У меня тоже были дополнительные условия. Просто сокращенно привел задачу из своей потому, что на этом этапе загвоздка была и у меня и у Джоша она почти тут же.
    Да и потом мое решение (запись в файл ака кеширование) дало положительный результат в виде: один раз зацепить данные, и из файла в готовом виде их отдавать - минус 1 запрос :)
  • Josh

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

    Spritz 30 января 2009 г. 8:20, спустя 2 минуты 52 секунды

    решение не скажу, выкрутились как-то другим способом - каунт писали в таблицу, а поиск по первой букве вырубили вообще. Просто не мое ТЗ было. Я хер отставил бы это так :):):)

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