Разработка приложений баз данных в Delphi. Шейкер Т.Д. - 97 стр.

UptoLike

Составители: 

97
Рис. 38. Результат выполнения примера 4.6
4.4.Внешнее соединение
Внутреннее соединение возвращает только те строки, для которых усло-
вие соединения принимает значение
true. Иногда требуется включить в ре-
зультирующий набор большее количество строк. Внешнее соединение возвра-
щает все строки из одной таблицы и только те строки из другой таблицы, для
которых условие соединения принимает значение истина. Строки второй таб-
лицы, не удовлетворяющие условию соединения, получают значение
null в
результирующем наборе. Существует два вида внешнего соединения:
LEFT
JOIN
и RIGHT JOIN.
4.4.1. Левое соединение
В левом соединении (LEFT JOIN) запрос возвращает все строки из левой
таблицы (т.е. таблицы, стоящей слева от словосочетания
LEFT JOIN) и только
те строки из правой таблицы, которые удовлетворяют условию соединения. Ес-
ли же в правой таблице не найдётся строк, удовлетворяющих заданному усло-
вию, в качестве значений второй таблицы подставляется
null.
Пример 4.7. Вывести сведения о заказе билетов на все объявленные со-
ревнования.
В таблице events находится перечень соревнований, а в таблице venues –
список сооружений, используемых для проведения соревнований. Данные о
сделанных заказах на билеты хранятся в таблице reservat. Сведения о заказчи-
ках приведены в таблице custoly. Перечень полей в таблицах и
связи между
таблицами показаны на рис. 39.
Для получения результатов надо соединить данные из двух таблиц: events
и reservat. Причём вполне возможна ситуация, при которой не на все соревно-
вания были заказаны билеты. Так как в запросе надо обеспечить вывод всех за-
планированных соревнований, то следует применить внешнее соединение.
                  Рис. 38. Результат выполнения примера 4.6


                        4.4.Внешнее соединение
      Внутреннее соединение возвращает только те строки, для которых усло-
вие соединения принимает значение true. Иногда требуется включить в ре-
зультирующий набор большее количество строк. Внешнее соединение возвра-
щает все строки из одной таблицы и только те строки из другой таблицы, для
которых условие соединения принимает значение истина. Строки второй таб-
лицы, не удовлетворяющие условию соединения, получают значение null в
результирующем наборе. Существует два вида внешнего соединения: LEFT
JOIN и RIGHT JOIN.
     4.4.1. Левое соединение
     В левом соединении (LEFT JOIN) запрос возвращает все строки из левой
таблицы (т.е. таблицы, стоящей слева от словосочетания LEFT JOIN) и только
те строки из правой таблицы, которые удовлетворяют условию соединения. Ес-
ли же в правой таблице не найдётся строк, удовлетворяющих заданному усло-
вию, в качестве значений второй таблицы подставляется null.
      Пример 4.7. Вывести сведения о заказе билетов на все объявленные со-
ревнования.
      В таблице events находится перечень соревнований, а в таблице venues –
список сооружений, используемых для проведения соревнований. Данные о
сделанных заказах на билеты хранятся в таблице reservat. Сведения о заказчи-
ках приведены в таблице custoly. Перечень полей в таблицах и связи между
таблицами показаны на рис. 39.
      Для получения результатов надо соединить данные из двух таблиц: events
и reservat. Причём вполне возможна ситуация, при которой не на все соревно-
вания были заказаны билеты. Так как в запросе надо обеспечить вывод всех за-
планированных соревнований, то следует применить внешнее соединение.

                                     97