Объединение таблиц
- Что такое объединения? и Что такое реляционные таблицы?
- Создание объединения
- Важность предложения WHERE
- Внутренние объединения
- Объединение многих таблиц
Объединение многих таблиц
SQL не ограничивает число таблиц, которые могут быть объединены посредством оператора SELECT. Основные правила для создания объединения остаются теми же. Вначале перечисляются все таблицы, затем определяются отношения между ними. Вот пример:
AND OrderIterns.prod_id = Products.prod_id
AND order_num = 20007;
prod_name vend_name prod_price quantity
-------------------- ---------------- -------------- ---------------------
18 inch teddy bear Bears R Us 11.9900 50
Fish bean bag toy Doll House Inc. 3.4900 100
Bird bean bag toy Doll House Inc. 3.4900 100
Rabbit bean bag toy Doll House Inc. 3.4 900 100
Raggedy Ann Doll House Inc. 4.9900 100
В этом примере выводятся предметы заказа номер 20007. Предметы заказа хранятся в таблице Orderltems. Каждый продукт хранится в соответствии с идентификатором продукта, который ссылается на продукт в таблице Products. Эти продукты связаны с соответствующими поставщиками в таблице Vendors по идентификатору поставщика, который хранится вместе с каждой записью о продукте. В предложении FROM этого примера перечисляются три таблицы, а предложение WHERE определяет оба названных предложения объединения. Дополнительное предложение WHERE используется затем для фильтрации только предметов заказа 20007.
К вопросу о производительности
СУБД обрабатывают объединения, тратя время на обработку каждой указанной таблицы. Этот процесс может оказаться очень ресурсоемким, поэтому не следует использовать объединения таблиц без особой на то необходимости. Чем больше таблиц вы объединяете, тем ниже производительность.
Максимальное число таблиц в объединении
Теперь самое время пересмотреть следующий пример из раздела, "Использование подзапросов", где оператор SELECT возвращает список клиентов, заказавших продукт RGAN01:
AND OrderItems.order_num = Orders.order_num
AND prod_id = 'RGANOl';
cust_name cust_contact
--------------- -----------------------
Fun4All Denise L. Stephens
The Toy Store Kim Howard
Как уже говорилось в разделе "Использование подзапросов", возвращение необходимых для этого запроса данных требует использования трех таблиц. Однако вместо использования подчиненных подзапросов здесь были применены два объединения для связи таблиц. Здесь были также указаны три предложения WHERE. Первые два связывают таблицы в объединение, последнее фильтрует данные по продукту RGAN01.



