Привет!
Была задача выводить суммарное количество балов в профиле пользователя, на основе множество добавленных нод определенного типа с упоминанием этого пользователя. Вообще все реализовал, но есть загвоздка, в моем коде, используется два раза подключение к базе данных с подключением одних и тех же таблиц, интуитивно, я чувствую, что это можно оптимизировать до одного подключения, но практических знаний не хватает, подскажите, как можно объединить все в одно подключение к бд:
маленькая аннотация: филд колекшн, первое поле ссылка на профиль, вторая балл за событие.
Алгоритм: изначально есть id связи полей в филд коллекшн, по нему, я нахожу id пользователя(это первое выполнение db_select), а далее во втором поле филд колекшена я нахожу все баллы которые принадлежат этому id пользователя.
<?php
$team_points = 0;
$entity_id = $value['value']; // id field_collection айди филд колекшена, который связывает поля
// найти id команды, 1 поле в field_collection
$query = db_select('field_data_field_team_result', 'tr');
$query->fields('tr', array('field_team_result_target_id'));
$query->condition('tr.entity_id', $entity_id);
$pid = $query->execute()->fetchAll();
foreach (
$pid as $key => $value){
$pid = $value->field_team_result_target_id;
}
// нахожу все баллы одного пользователя по $pid который нашел выше
$query = db_select('field_data_field_team_result', 'tr');
$query->innerJoin('field_data_field_point_result', 'pr', 'tr.entity_id = pr.entity_id');
$query->fields('pr', array('field_point_result_value'));
$query->condition('tr.field_team_result_target_id', $pid);
$points = $query->execute()->fetchAll();
foreach (
$points as $key3 => $value3){
$team_points += $value3->field_point_result_value;
}
?>
Собственно вопрос - как спарить два db_select в один, то есть мне сначала нужно найти id пользователя, а потом, по id пользователя найти все id филд колекшена, и у же по ним найти все начисленные баллы.