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

Повторное использование таблицы

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


Читайте также:
  1. Creating and using arrays Создание и использование массивов
  2. I.Себестоимость и использование продукции производителей
  3. IX. Предоставление и использование Субсидий
  4. Using dictionaries Использование словарей
  5. Using inheritance Использование наследования
  6. Using the switch statement Использование Переключатель
  7. VI.Себестоимость и использование продукции производителей

 

При соединении нескольких таблиц может обнаружиться, что требует_ ся неоднократно соединять одну и ту же таблицу. В нашем примере БД внешние ключи к таблице branch присутствуют как в таблице account (отделение, в котором был открыт счет), так и в таблице employee (отде_ ление, в котором работает сотрудник). Если в результирующий набор должны войти оба отделения, таблицу branch можно включить в блок from дважды, в первый раз соединив ее с таблицей employee, а второй раз – с таблицей account. Это сработает, если каждому экземпляру таб_ лицы branch присвоить свой псевдоним, чтобы сервер знал, на какой экземпляр делается ссылка:

 

mysql> SELECT a.account_id, e.emp_id,
_> b_a.name open_branch, b_e.name emp_branch
_> FROM account a INNER JOIN branch b_a
_> ON a.open_branch_id = b_a.branch_id
_> INNER JOIN employee e
_> ON a.open_emp_id = e.emp_id
_> INNER JOIN branch b_e
_> ON e.assigned_branch_id = b_e.branch_id
_> WHERE a.product_cd = 'CHK';

 

+____________+________+_______________+_______________+ | account_id | emp_id | open_branch | emp_branch | +____________+________+_______________+_______________+

 

|   |   | Headquarters | Headquarters |
|   |   | Headquarters | Headquarters |
|   |   | Headquarters | Headquarters |

 

| 1 | 10 | Woburn Branch | Woburn Branch |

 

| 4 | 10 | Woburn Branch | Woburn Branch |

 

| 6 | 13 | Quincy Branch | Quincy Branch |

 

| 11 | 16 | So. NH Branch | So. NH Branch |

 

| 15 | 16 | So. NH Branch | So. NH Branch |

 

| 20 | 16 | So. NH Branch | So. NH Branch |

 

| 23 | 16 | So. NH Branch | So. NH Branch | +____________+________+_______________+_______________+ 10 rows in set (0.07 sec)

 

Этот запрос показывает, кто открыл каждый текущий счет, в каком от_ делении это произошло и к какому отделению приписан в настоящее время сотрудник, открывший счет. Таблица branch включена дважды под псевдонимами b_a и b_e. Благодаря присваиванию разных псевдо_ нимов каждому экземпляру таблицы branch, сервер сможет определить экземпляр, на который делается ссылка, – соединенный с таблицей


 

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

account или с таблицей employee. Таким образом, имеем пример запроса, в котором использование псевдонимов таблиц является обязательным.

 


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


<== предыдущая страница | следующая страница ==>
Применение подзапросов в качестве таблиц| Рекурсивные соединения

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