Как вы получаете Min() или Max() в drupal, используя views?
-
23-09-2019 - |
Вопрос
Я использую представления Drupal 2, и мне нужно извлечь минимальные значения из полей в пользовательской таблице.Запрос для этого был бы простым, если бы я писал его вручную - что-то вроде "ВЫБЕРИТЕ foo, min (bar) ИЗ ГРУППЫ таблиц По foo". Но как бы я это сделал, используя представления?Я уже определил таблицу в файле views.info, поэтому нет проблем с получением представлений для просмотра таблицы.Это часть запроса Min(), которую я просто не понимаю.
Моей следующей остановкой будет документация Views API, но если кто-нибудь сможет просто в общих чертах описать, как это сделать быстро, я был бы очень признателен.
Нет правильного решения
Другие советы
Новый ответ на старый вопрос, но что-то вроде этого сработает.Вам нужно создать пользовательский обработчик поля, а затем обернуть поле следующим образом:
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);
}
}
- Используйте агрегацию из расширенной конфигурации представлений.После установки этого параметра да, вы можете выбрать max, min или любой другой селектор полей.
Проверьте свои результаты, но это должно сработать хорошо
- В качестве альтернативы, в некоторых случаях вы можете отсортировать свои данные по возрастанию или по убыванию, а затем просто выбрать один из них для отображения в представлении.Может быть проблематично при отображении нескольких полей или около того.
После тестирования первый, кажется, работает быстрее, по крайней мере, в небольших масштабах.
Можно было бы рассмотреть следующие модули группировка by и views_calc просмотры_calc, но я предполагаю, что они неприемлемы для вас.
Кроме того, вы можете выполнить это с помощью пользовательский модуль.