Студопедия

КАТЕГОРИИ:

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



Выборка из нескольких таблиц.

Читайте также:
  1. Cерийная выборка
  2. Аудиторская выборка
  3. База исследования и выборка
  4. Вариационные ряды. Генеральная совокупность и выборка
  5. Вещное право по Законам XII таблиц. Понятие квиритской собственности
  6. Возможности совместной обработки нескольких таблиц, связывание таблиц
  7. Воспроизведение нескольких форматов
  8. Выбрать номера нескольких правильных ответов
  9. Выбрать номера нескольких правильных ответов

 

FROM Список_имен_базовых таблиц

 

список имен таблиц, "опрашиваемых" данной выборкой, вида

 

Имя_таблицы1 [Локальный алиас1],…, Имя_таблицыn [Локальный алиасn]

 

Либо

 

Имя_таблицы [Локальный алиас]

[[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN *

Имя_таблицы [Локальный алиас]

[ON Условие_связи]

 

 

Первый вариант синтаксиса выборки из нескольких базовых таблиц означает (с точки зрения логики, но не реализации исполнения) выборку из их именованного декартова произведения т.е. выборку всевозможных комбинаций строк базовых таблиц.

 

       
   
 

 

 


Такая полная выборка редко бывает необходимой, поэтому ее ограничивают наложением дополнительных условий (отношений, связей, объединения) на пары базовых таблиц. Ясно, что на практике чаще всего используются равенства первичного и внешнего ключей. В стандартном SQL связи реализуются с помощью опций WHERE.

 

Так, выборка

Select * from T1,T2 where B(r1,r2)

выбирает связанные отношением (заданным предикатом B(r1,r2)) записи r1, r2.

Расширенный синтаксис предлагает более непосредственное указание (и, по всей видимости, более оптимальную реализацию) такого произведения по условию – или, в терминах СУБД, соединения (JOIN) таблиц. Различают несколько вариантов такого соединения.

 

Внутреннее соединение (INNER JOIN) предполагает отбор из обеих таблиц только записей, удовлетворяющих соответствующему условию связи; кроме того, в левое внешнее соединение (LEFT [OUTER] JOIN) отбираются дополнительно все те строки из таблицы, стоящей слева от слова JOIN, в правое внешнее соединение (RIGHT [OUTER] JOIN) - все те строки из таблицы, стоящей справа от слова JOIN, и в полное внешнее соединение (FULL [OUTER] JOIN) - все те строки обеих таблиц, для которых соответствия в другой таблице не существует.

 

Более формально,

Т1 INNER JOIN T2 ON B(r1,r2) » {r1+r2 : r2Î T1 & r2Î T2 & B(r1,r2)}

Т1 LEFT JOIN T2 ON B(r1,r2) » Т1 INNER JOIN T2 ON B(r1,r2) È

{r1+NULL(T2) : not $ r2Î T2 B(r1,r2)}

здесь NULL(T2) – “пустая” или “фиктивная” запись таблицы Т2, т.е. функция, принимающая значение NULL на всех именах полей из T2.



Т1 RIGHT JOIN T2 ON B(r1,r2) » Т1 INNER JOIN T2 ON B(r1,r2) È

{NULL(T1)+r2 : not $ r1Î T1 B(r1,r2)}

Т1 FULL JOIN T2 ON B(r1,r2) » Т1 INNER JOIN T2 ON B(r1,r2) È

{NULL(T1)+r2 : not $ r1Î T1 B(r1,r2)} È

{r1+NULL(T2) : not $ r2Î T2 B(r1,r2)}

 

 


Дата добавления: 2015-01-29; просмотров: 20; Нарушение авторских прав


<== предыдущая лекция | следующая лекция ==>
Добавление записи. | Разрешение коллизии имен. Квалифицированные имена и алиасы.
lektsii.com - Лекции.Ком - 2014-2018 год. (0.009 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты