Сложные SQL запросы на Drupal API: множественный WHERE

Далее вниманию читателей будет представлен пример составления запроса на языке SQL c учетом API Drupal для работы с базами данных. Рассмотрим аналог оператора WHERE с множественными условиями и выборкой информации из 3 таблиц подряд.

Итак,  начну SQL запроса на так сказать "традиционном" SQL, далее приведу тот же пример на Drupal Database API***:

<?php
/**
 * Аналог следующего запроса на Drupal API:
 * SELECT mail
 *   FROM users AS u, field_data_field_profile_province_code AS pz, bautoplan_admin_zone AS az
 *   WHERE (
 *     pz.entity_id = u.uid
 *     AND az.id = pz.field_profile_province_code_value
 *     AND az.id = 30
 *   )
 */
$query = db_select('users', 'u');
$query->join("field_data_field_profile_province_code", "pz", "pz.entity_id = u.uid");
$query->join("bautoplan_admin_zone", "az", "az.id = pz.field_profile_province_code_value");
$query->fields('u', array('mail'))->condition("az.id", 30, '=');
$mails_list = $query->execute()->fetchCol();
?>

*** Здесь подразумевается, что вы вполне знакомы с SQL СУБД MySQL.

Дополнительная инфомация:

  • Из таблицы users я выбираю поле mail у которого uid равняется значению entity_id таблицы field_data_field_profile_province_code, где в свою очередь поле field_profile_province_code_value равняется id у bautoplan_admin_zone.
  • С помощью вызова fetchCol() получаем колонку поля mail таблицы в виде простого одномерного массива.

Информация актуальна применительно к Drupal 7.





© 2012-2014 Druweb.ru. Вы можете спокойно копировать любые материалы сайта только при наличии обратной ссылки.