[РЕШЕНО]Сложный SQL-запрос не работает.

Аватар пользователя protoftor protoftor 18 августа 2014 в 15:44

Уважаемые коллеги, всем доброго времени суток. Проблема возникла при разработке одного модуля. Нужно запустить такой запрос:
"SELECT field_question_tid AS quest_id
FROM ((field_data_field_limit INNER JOIN field_data_field_question ON field_data_field_limit.entity_id= field_data_field_question.field_question_tid)
INNER JOIN field_data_field_result_vote_dir ON field_data_field_result_vote_dir.entity_id=field_data_field_question.entity_id)
INNER JOIN field_data_field_received ON field_data_field_question.field_question_tid= field_data_field_received.entity_id
WHERE (field_result_vote_dir_value='За' AND field_received_value=1)
GROUP BY quest_id, field_limit_value
HAVING count(field_result_vote_dir_value)fields('q', array('field_question_tid'));
$query->fields('l', array('field_limit_value'));
$query->join('field_data_field_limit', 'l', 'l.entity_id=q.field_question_tid');
$query->join('field_data_field_result_vote_dir', 'v', 'v.entity_id=q.entity_id');
$query->join('field_data_field_received', 'r', 'r.entity_id=q.field_question_tid');
$query->condition('v.field_result_vote_dir_value', 'За', '=');
$query->condition('r.field_received_value', 1, '=');
$query->groupBy('q.field_question_tid');
$query->groupBy('l.field_limit_value');
$query->addExpression('count(v.field_result_vote_dir_value)', 'vcount');
$query->havingCondition('vcount', 'l.field_limit_value', '<');
$result=$query->execute();
Хочу посмотреть результат работы чем-то вроде этого:
while($record = $result->fetchAssoc()) {
print_r($record);
}
И - пусто! Хотя, запрос нормально выполняется в phMyAdmin и дает правильный результат.
Понимаю, запрос сложный, навороченный, но такова задача.
НЕ подскажете ли в чем косяк у меня?
Заранее благодарю всех откликнувшихся!

Комментарии

Аватар пользователя Chyvakoff Chyvakoff 18 августа 2014 в 17:54

Код с самого начала приведён?
Вы уж или Drupal Database API, либо традиционный db_query.

Аватар пользователя protoftor protoftor 18 августа 2014 в 22:42

К сожалению, приключилась непонятная история с wysiwyg-редактором. На самом деле, я привел текст запроса, после чего написал: сначала пробовал db_query, но безуспешно. Начал разбираться с db_select. По советам бывалых написал вот такой код... И далее по тексту. НО вот этот кусок редактор не желает отображать, возможно фильтры против инъекций sql какие-то...
Главная проблема - ни тот ни другой не пашут. Увы!

Аватар пользователя protoftor protoftor 20 августа 2014 в 9:52

Вот, дикая история. Оказывается все было верно, а запрос ничего не выдававал из-за условия where field_result_vote_dir_value='За'. Вот это "За" MySQL понимать отказался. Хоть тресни, пробовал кодировку ставить SET NAMES 'UTF8', и все прочее, что в таких случая советуют. Плюнул и передеелал само поле, как надо было с самого начала, не списком строк сделал, а списком чисел. Тогда заменил условие where field_result_vote_dir_value='За' на field_result_vote_dir_value=1 - и все стало в шоколаде. И, кстати, зря наговаривают на функцию db_query , нормально она с таким запросиком справилась в итоге. Всем привет.