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

Осваиваем приемы самообъединения таблицы.

Читайте также:
  1. Вопрос 3. Раскройте приемы обсл-ия фонемат-ого слуха и восприятия
  2. Вопрос.Охарактерезуйте этапы осбл-ия речи у шк-ов, приемы анализа анамнестических данных шк-ов.
  3. Знания, умения, навыки, осваиваемые обучающимся
  4. Методы, приемы, средства обучения. Классификация методов по источникам и уровням познавательной деятельности.
  5. Неделя: осваиваем новые знания
  6. Нетрадиционные формы проведения уроков; методы и приемы работы учителей новаторов.
  7. Нешрифтовые приемы выделения

В этом случае одной и той же таблице даются два псевдонима.

Задание 10: требуется найти всех ровесников в органи­зации.

Это можно сделать оператором

 

SELECT pl.Farn, p2.Fam, pl.Year_b FROM Pers pi, Pers p2

WHERE (pl.Year_b = p2.Year_b) AND (pl.Fam! = p2.Fam)

 

Замечание. В этом примере для таблицы Pers мы ввели два псевдонима: р1 и р2.

В кон­струкции WHERE мы ищем в этих якобы разных таблицах записи с одинако­вым годом рождения. Второе условие pl.fam!= p2.fam нужно, чтобы сотруд­ник не отображался в результатах как ровесник сам себя.

Правда, приведен­ный оператор выдает в результате по две записи на каждую пару ровесников, сначала, например, «Николаев — Андреев», а потом «Андреев — Николаев».

Чтобы исключить такое дублирование можно добавить еще одно условие:

pl.Fam < p2.Fam:

 

SELECT pl.Fam, p2.Fam, pl.Year_b FROM Pers pi, Pers p2

WHERE (pl.Year_b - p2.Year_b) AND (pl.Fam!= p2.Fam) AND (pl.Fam < p2.Fam)

Дополнительное условие упорядочивает появление фамилий в pi и р2 и иск­лючает дублирование результатов.

 

9. Осваиваем приемы создания внешних объединений

Замечание. До сих пор рассматривались объединения, основанные на однозначном соответствии записей двух таблиц, когда каждой записи в первой таблице на­ходилась соответствующая ей запись во второй таблице.

Возможны и другие виды объединений, которые выдают записи независимо от того, есть ли соот­ветствующее поле во второй таблице. Это внешние объединения (outer join).

Их три типа:

А) левое;

Б) правое;

В) полное.

Пояснение: Левое объединение (обозначается ключевы­ми словами LEFT OUTER JOIN... ON) включает в результат все записи первой таблицы, даже те, для которых не имеется соответствия во второй.

Правое объединение (обозначается ключевыми словами RIGHT OUTER JOIN... ON) включает в результат все записи второй таблицы, даже если им нет соответст­вия в записях первой. Полное объединение (обозначается ключевыми словами FULL OUTER JOIN... ON) включает в результат объединение записей обеих таблиц, независимо от их соответствия.

Задание. Добавьте в базу данных таблицу Chef, в которую занесите данные на членов совета директоров этой компании. Причем в число членов совета входят и сотрудники компании, и по­сторонние лица.

Пусть в таблице Pers имеются за­писи на сотрудников «Иванов» и «Петров», причем Петров является членом совета, а Иванов — нет.

В таблице Chef имеются записи на членов совета «Пет­ров» и «Сидоров», причем Сидоров — не сотрудник компании.

Задание 11. Выполните оператор левого объединения

SELECT * FROM Pers LEFT OUTER JOIN Chef ON Pers.Fam = Chef.Fam

 

получите результат вида:

Поля таблицы Pers Поля таблицы Chef
Иванов ……………    
Петров ……………. Петров …………….
       

 

Замечание. Оператор задает левое объединение таблицы Pers (ее имя указано после ключе­вого слова FROM) с таблицей Chef (ее имя указано после ключевых слов LEFT OUTER JOIN).

Условие объединения указано после ключевого слова ON и за­ключается в совпадении фамилий.

Как видно из таблицы, результат включает все поля и таблицы Pers, и таблицы Chef. Число строк соответствует числу записей таблицы Pers. В строках, отно­сящихся к записям, для которых в Chef не нашлось соответствие, поля табли­цы Chef остаются пустые.

 

Задание 12. Выполните оператор правого объединения

 

SELECT * FROM Pers RIGHT OUTER JOIN Chef ON Pers.Fam = Chef.Fam

 

получите результат вида:

Поля таблицы Pers Поля таблицы Chef
Петров | ……………. Петров …………..
    Сидоров ……………

 

Число строк соответствует числу записей таблицы Chef.

В строках, относя­щихся к записям, для которых в Pers не нашлось соответствие, поля таблицы Pers остаются пустые.

 

Задание 13. Выполните оператор полного объединения

SELECT * FROM Pers FULL OUTER JOIN Chef ON Pers.Fam = Chef.Fam

получите результат вида:

Поля таблицы Pers Поля таблицы Chef
Иванов …………….    
Петров …………….. Петров …………….
    Сидоров ……………..

В нем к строкам, относящимся к таблице Pers, добавлены строки, относя­щиеся к таблице Chef, для которых не нашлось соответствия в таблице Pers.


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


<== предыдущая страница | следующая страница ==>
Осваиваем работу с псевдонимами| ОБЩАЯ ХАРАКТЕРИСТИКА СРЕДНЕГО ВОЗРАСТА

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