[РЕШЕНО]вопрос по Data Base API

Главные вкладки

Аватар пользователя Im Im 1 апреля 2014 в 11:58

Исходные данные: нода с полем "значение" и "ссылка на термин таксономии".

Что нужно: у поля "значение" найти минимум и максимум, в рамках одного термина таксономии.

Что есть:

<?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();

?>

Что не понимаю: как сделать условие чтобы значения минимума и максимума выбирались в рамках одного термина

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

Помогите сформировать условие Smile А то что то не понимаю, как в бд таблица поля "значение" относится к таблицам терминов, что их объединяет? нода? то есть джойнить ноду и таблицу с терминами?.

Комментарии

Аватар пользователя Im Im 1 апреля 2014 в 12:48

"q2_faith" wrote:
зачем из ревизий выбирать?

это косяк.
"q2_faith" wrote:
а что запрос должен вернуть?

это таблица поля, оттуда берем значения из "field_power_value"

Аватар пользователя q2_faith q2_faith 1 апреля 2014 в 12:54

хотя и будет лишний join, но я бы сделал так:
основная таблица nodeб к ней leftjoin таблицы полей мощности и термина

Аватар пользователя Im Im 1 апреля 2014 в 12:58

"q2_faith" wrote:
хотя и будет лишний join, но я бы сделал так:
основная таблица nodeб к ней leftjoin таблицы полей мощности и термина

сейчас попробую, отпишусь.

Аватар пользователя Im Im 1 апреля 2014 в 16:33

"q2_faith" wrote:
хотя и будет лишний join, но я бы сделал так:
основная таблица nodeб к ней leftjoin таблицы полей мощности и термина

вот что получилось, работает, Спасибо за наводку

<?php
      $query 
db_select('field_data_field_harakteristiki'"t");

      

$query->join("taxonomy_index""i""t.entity_id = i.nid");
      
$query->join("field_data_field_power""p""p.entity_id = t.field_harakteristiki_value");

      

$query->condition("i.tid"$term_id"=");

      

$query->addExpression('MIN(p.field_power_value)''min_power');
      
$query->addExpression('MAX(p.field_power_value)''max_power');
      
$limits_power $query->execute()->fetch();?>
Аватар пользователя q2_faith q2_faith 1 апреля 2014 в 16:51

"Im" wrote:
вот что получилось, работает, Спасибо за наводку

я не совсем это имел ввиду)
в вашем случае один джойн лишний по моему

<?php
$query 
db_select('field_data_field_power'"p");

      

$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->addExpression('MAX(p.field_power_value)''max_power');
      
$limits_power $query->execute()->fetch();
?>
Аватар пользователя Im Im 1 апреля 2014 в 17:06

"q2_faith" wrote:
я не совсем это имел ввиду)
в вашем случае один джойн лишний по моему

у меня в реале входные данные другие, отличаются от описанных в теме. У меня поле со значением находится внутри коллекции полей. поэтому появляется еще один join.