Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Многотабличные объединения в стандарте SQL2




Одно из крупных преимуществ расширенного предложения From заключается в том, что оно дает единый стандарт для определения как внутренних и внешних объединений, так и произведений и запросов на объединение. Другим, даже еще более важным преимуществом этого предложения является то, что оно обеспечивает очень ясную и четкую спецификацию объединений трех и четырех таблиц, а также произведений и запросов на объединение. Для построения этих сложных объединений любые выражения объединения могут быть заключены в круглые скобки. Результирующее выражение, в свою очередь, можно использовать для создания других выражений объединения, как если бы оно было простой таблицей. Точно так же, как SQL позволяет с помощью круглых скобок комбинировать различные арифметические операции (+, -, * и /) и строить сложные выражения, стандарт SQL2 дает возможность создавать сложные выражения для объединений.

Чтобы привести пример многотабличного объединения, предположим, что к таблицам girls и boys добавлена новая таблица parents, которая имеет три столбца:

child Соответствует столбцу name в таблицах girls и boys type Принимает значение " father "(отец) или " mother "(мать) pname Имя родителя

Строка в таблице girls или boys может иметь две связанные строки в таблице parent, одна из которых определяет мать, а другая — отца, или может иметь только одну из этих строк, или может совсем не иметь связанных строк, если отсутствуют данные о родителях ребенка. В таблицах girls, boys и parents в совокупности содержится достаточно богатый набор данных, чтобы обеспечить несколько примеров многотабличных запросов.

Предположим, например, что вы хотите составить список всех детей и их родителей. Вот запрос, создающий такой список:

Так как это внутреннее объединение, то девочки и мальчики, не имеющие связанных строк в таблице parents, в таблицу результатов запроса не попадут. Модифицируя этот запрос в левое внешнее объединение, можно включить соответствующие этим детям строки (с расширением null) в результаты запроса:

Если по каким-либо причинам вы хотите включить в результаты запроса только несвязанные строки девочек, то для этого можно переделать данный запрос в запрос на объединение двух объединений, одного внутреннего и одного внешнего:

В качестве еще одного примера предположим, что вы опять, как в предыдущих примерах, хотите найти пары мальчик/девочка из одного и того же города, но на этот раз вы хотите еще и включить в таблицу результатов имя отца мальчика и имя матери девочки. То, что в объединениях данного примера могут присутствовать несвязанные строки, означает несколько возможных "правильных" ответов на запрос. Например, предположим, что вы хотите включить в результаты запроса все пары мальчик/девочка из одних и тех городов, даже те, в которых либо мальчик, либо девочка имеют строки, не связанные с таблицей parents. В этом запросе вам придется использовать два внешних объединения — (boys join parents) и (girls join parents) — и одно внутреннее: (boys join girls). В результате этот запрос в стандарте SQL2 будет выглядеть следующим образом:

Как видно из примера, даже запрос с тремя объединениями в соответствии со стандартом SQL2 может иметь весьма сложный вид. Однако, несмотря на эту сложность, запрос по стандарту SQL2 точно и однозначно определяет то, что должна выполнить СУБД. Нет никакой неясности в отношении порядка объединения таблиц или в отношении того, какие объединения являются внешними, а какие — внутренними. Возможность произвольного сочетания операций union и join обеспечивает гибкость предложения from. В общем, новые возможности стоят дополнительных сложностей расширенного предложения from стандарта SQL2.




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 349; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.