Исходные данные: нода с полем "значение" и "ссылка на термин таксономии".
Что нужно: у поля "значение" найти минимум и максимум, в рамках одного термина таксономии.
Что есть:
<?php
// Находим минимальное и максимальное значение мощности
$query = db_select('field_revision_field_power');
$query->addExpression('MIN(field_power_value)', 'min_power');
$query->addExpression('MAX(field_power_value)', 'max_power');
$limits_power = $query->execute()->fetch();
?>
Что не понимаю: как сделать условие чтобы значения минимума и максимума выбирались в рамках одного термина
Для чего это нужно: есть категории продукта, на каждой странице категории есть параметрический поиск, и этот поиск берет значение для ползунков из базы данных, но так как нет условия выборки по термину, то получается, что данные формируются из общей базы, то есть отображаются значения которых нет на странице определенного термина.
Помогите сформировать условие А то что то не понимаю, как в бд таблица поля "значение" относится к таблицам терминов, что их объединяет? нода? то есть джойнить ноду и таблицу с терминами?.
Комментарии
<?php$query = db_select('field_revision_field_power');?>
зачем из ревизий выбирать?
а что запрос должен вернуть?
это косяк.
это таблица поля, оттуда берем значения из "field_power_value"
хотя и будет лишний join, но я бы сделал так:
основная таблица nodeб к ней leftjoin таблицы полей мощности и термина
сейчас попробую, отпишусь.
вот что получилось, работает, Спасибо за наводку
<?php
$query->join("taxonomy_index", "i", "t.entity_id = i.nid");
$query->condition("i.tid", $term_id, "=");
$query->addExpression('MIN(p.field_power_value)', 'min_power');
$query = db_select('field_data_field_harakteristiki', "t");
$query->join("field_data_field_power", "p", "p.entity_id = t.field_harakteristiki_value");
$query->addExpression('MAX(p.field_power_value)', 'max_power');
$limits_power = $query->execute()->fetch();?>
я не совсем это имел ввиду)
в вашем случае один джойн лишний по моему
<?php
$query->join("taxonomy_index", "i", "p.entity_id = i.nid");
$query->condition("i.tid", $term_id, "=");
$query->addExpression('MIN(p.field_power_value)', 'min_power');
$query = db_select('field_data_field_power', "p");
$query->addExpression('MAX(p.field_power_value)', 'max_power');
$limits_power = $query->execute()->fetch();
?>
у меня в реале входные данные другие, отличаются от описанных в теме. У меня поле со значением находится внутри коллекции полей. поэтому появляется еще один join.
ок)