Складні 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.