Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Сравнение условий соединения и условий фильтрации

Упражнения | Что такое соединение? | Декартово произведение | Внутренние соединения | ANSI_синтаксис соединения | Соединение трех и более таблиц | Применение подзапросов в качестве таблиц | Повторное использование таблицы | Рекурсивные соединения | Сравнение эквисоединений с неэквисоединениями |


Читайте также:
  1. ANSI_синтаксис соединения
  2. А) определение группы соединения обмоток;
  3. Анализ местных условий
  4. Б) в случае изменения технологических условий;
  5. Бор и его соединения. Нахождение в породах, в вулканических и поствулканических процессах. Источники бора в осадочных породах.
  6. В основе процесов получения уретановых эластомеров лежит реакция поликонденсации диизоцианатов с соединениями, имеющими по крайней мере две гидроксильные группы.
  7. В) Сокращение рабочего времени и дальнейшее улучшение условий труда

 

Теперь мы знаем, что условия соединения относятся к подблоку on, то_ гда как условия фильтрации располагаются в блоке where. Однако SQL не налагает жестких ограничений на размещение условий, поэтому соз_ давать запросы следует очень внимательно. Например, следующий за_ прос соединяет две таблицы с помощью одного блока соединения и од_ ного условия фильтрации в блоке where:


 

106 Глава 5. Запрос к нескольким таблицам

mysql> SELECT a.account_id, a.product_cd, c.fed_id

 

_> FROM account a INNER JOIN customer c _> ON a.cust_id = c.cust_id

_> WHERE c.cust_type_cd = 'B';

 

+____________+____________+____________+ | account_id | product_cd | fed_id | +____________+____________+____________+

|   | CHK | 04_1111111 |
|   | BUS | 04_1111111 |
|   | BUS | 04_2222222 |
|   | CHK | 04_3333333 |
|   | SBL | 04_4444444 |

 

+____________+____________+____________+ 5 rows in set (0.08 sec)

 

Достаточно просто, но что произойдет, если по ошибке поместить усло_ вие фильтрации в подблок on, а не в блок where?

 

mysql> SELECT a.account_id, a.product_cd, c.fed_id

 

_> FROM account a INNER JOIN customer c _> ON a.cust_id = c.cust_id

_> AND c.cust_type_cd = 'B';

 

+____________+____________+____________+ | account_id | product_cd | fed_id | +____________+____________+____________+

|   | CHK | 04_1111111 |
|   | BUS | 04_1111111 |
|   | BUS | 04_2222222 |
|   | CHK | 04_3333333 |
|   | SBL | 04_4444444 |

 

+____________+____________+____________+ 5 rows in set (0.00 sec)

 

Как видите, второй вариант, в котором оба условия находятся в подбло_ ке on и нет блока where, обеспечивает аналогичные результаты. А что ес_ ли оба условия помещены в блок where, но блок from по_прежнему ис_ пользует ANSI_синтаксис соединения?

 

mysql> SELECT a.account_id, a.product_cd, c.fed_id

 

_> FROM account a INNER JOIN customer c _> WHERE a.cust_id = c.cust_id

_> AND c.cust_type_cd = 'B';

 

+____________+____________+____________+ | account_id | product_cd | fed_id | +____________+____________+____________+

|   | CHK | 04_1111111 |
|   | BUS | 04_1111111 |
|   | BUS | 04_2222222 |
|   | CHK | 04_3333333 |
|   | SBL | 04_4444444 |

 

+____________+____________+____________+ 5 rows in set (0.00 sec)


 

Упражнения  
   

 

Сервер MySQL снова сгенерировал тот же результирующий набор. Рас_ положить условия на соответствующих местах, чтобы запрос был пра_ вильно понят и обработан, – ваша задача.

 


Дата добавления: 2015-08-17; просмотров: 47 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Gt; FROM employee e1 INNER JOIN employee e2| Упражнения

mybiblioteka.su - 2015-2024 год. (0.006 сек.)