Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как получить Min() или Max() в drupal с помощью представлений?

Автор вопроса: CommunityОтветов: 3

Я использую Drupal Views 2, и мне нужно получить минимальные значения из полей в пользовательской таблице. Запрос для этого был бы простым, если бы я писал его вручную - что-то вроде "SELECT foo, min(bar) FROM table GROUP BY foo". Но как мне это сделать с помощью представлений? Я уже определил таблицу в файле views.info, поэтому нет проблем с получением представлений для просмотра таблицы. Это часть запроса Min(), которую я просто не понимаю.
Следующей моей остановкой будет документация по Views API, но если кто-то может просто предоставить схему того, как это сделать быстро, я был бы очень признателен.

drupaldrupal-views

Ответы

Ответ 1 · рейтинг 1 · mpaler

Новый ответ на старый вопрос, но что-то вроде этого будет работать. Вам нужно создать обработчик настраиваемого поля, а затем обернуть поле следующим образом:

class views_handler_custom_field extends views_handler_field {

  function query() {
    $this->ensure_my_table();
    $this->field_alias = $this->query->add_field("MAX({$this->table_alias}", "{$this->real_field})",$this->table_alias . "_" . $this->real_field);
  }
}

Ответ 2 · рейтинг 1 · Viljami Salmi

  1. Используйте агрегацию из расширенной конфигурации представлений. После того, как это установлено, вы можете выбрать max, min или любой другой селектор для полей.

Проверьте свои результаты, но они должны работать хорошо

  1. В качестве альтернативы в некоторых случаях вы можете отсортировать данные по возрастанию или по убыванию, а затем просто выбрать один из них для отображения в представлении. Может быть проблематично при отображении нескольких полей или около того.

После тестирования первый кажется быстрее, по крайней мере, в небольших масштабах.

Ответ 3 · Nikit

Можно рассмотреть модули groupby и views_calc, но я предполагаю, что они для вас неприемлемы.
Кроме того, это можно сделать с помощью настраиваемого модуля.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы