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

Залишити відповідь

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.