parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

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

StopDesign 11.01.2008 16:35 / 11.01.2008 16:37

...а затем из таблицы делать хеш таблиц ($.distinct[tables])
Я думал, что ^hash::sql{запрос}[$.distinct(1)] делает точно то же самое. Но, выходит, в случает с хэшем это где-то на уровне клиента MySQL делается?

Задача - получить атрибуты объекта (по id), у которых дата создания максимальна, но меньше заданной. Это откат редактирования свойств в админке CMS. При редактировании объекта может изменяться только одно свойство. То есть, даты у всех свойств могут быть разными. Последнюю версию выбрать - не проблема. А тут нужно сделать, например, 5 шагов undo.
$prop_hash[^MAIN:pSQL.hash{
  SELECT attribute AS at, i_value, f_value, t_value
  FROM $sAttributesTableName
  WHERE object_id = '$id'
    AND dt <= ( SELECT DISTINCT dt
                FROM $sAttributesTableName
                WHERE object_id = '$id'
                ORDER BY dt DESC
                LIMIT $undo_step_count, 1 )
  ORDER BY dt DESC
}[$.distinct(1)]]
Я планировал сгруппировать данные по `attribute`, но получалось, что в результат попадают только первые значения (ORDER BY не помогает).

Сейчас оставлю так, а к финальному релизу напишу запрос посложнее (видимо, с временными таблицами).