Выборка 5 последних элементов с определенной подгруппы информационной системы

#
Выборка 5 последних элементов с определенной подгруппы информационной системы
Здравствуйте, у меня есть информационная система (ИС) в ней есть 3 подгруппы, каждая из которых содержит n число элементов (статей)
Как мне выбрать с каждой подгруппы по 5 последних элементов?
Заранее большое спасибо!
#
Re: Выборка 5 последних элементов с определенной подгруппы информационной системы
Для реализации вашей задачи нужно, чтобы контроллер выполнил такой вот запрос:

  (SELECT * FROM `informationsystem_items` WHERE `informationsystem_group_id` = 10 ORDER BY `datetime` DESC LIMIT 5)
  UNION
  (SELECT * FROM `informationsystem_items` WHERE `informationsystem_group_id` = 11 ORDER BY `datetime` DESC LIMIT 5)
  UNION
  (SELECT * FROM `informationsystem_items` WHERE `informationsystem_group_id` = 12 ORDER BY `datetime` DESC LIMIT 5)


Проблема, однако, заключается в том, что до сих пор (HostCMS 6.5.7) в
modules/core/querybuilder/select.php не реализован метод unionOrderBy().
Точнее он есть, но он пустой. А без этого метода мы не сможем выбрать в каждом SELECT-е
самые "свежие" статьи (т.к. не работает "внутренняя" сортировка).

Однако есть способ (не совсем в духе ORM и совсем не универсальный):
  1) "вручную" выполнить SQL запрос, и, получив на выходе ORM объекты, опять же,
  2) "вручную" передать их в XSL-шаблонизатор

  $oInformationsystemControllerShow
    ->xsl(Core_Entity::factory('Xsl')->getByName('My XSL Template'))
    // LIMIT = 0 - т.е. сам контроллер не будет отбирать никакие ИЭ
    ->limit(0);
  $aGroups = array(10, 11, 12);
  foreach ($aGroups as $groupId) {
    $aObj = Core_QueryBuilder::select('*')
      ->from('informationsystem_items')
      ->where('informationsystem_group_id', '=', $groupId)
      ->where('deleted', '=', 0)
      ->orderBy('datetime', 'DESC')
      ->limit(5)
      ->execute()
        ->asObject('Informationsystem_Item_Model')
        ->result();
    $oInformationsystemControllerShow
      ->addEntities($aObj);
  }
  $oInformationsystemControllerShow->show();

з.ы.
Код не отлаживался, возможны баги
з.ы.ы.
Понятно, что этот код начисто лишен дополнительных "фич", реализуемых контроллером
показа (например, нужны дополнительные для получения доп.свойств инфоэлементов)
ARTatom
Авторизация