Связывание таблиц
Раздел WHEREможет быть использован для связывания таблиц. В этом случае условие связывания должно присоединяться к логическому выражению с помощью логической операции AND(логическое умножение).
Рассмотрим пример, уточняющий один из представленных выше:
SELECT Наименование, Семестр, Количество _часов
FROM Учебный_ план, INNER 7011 Дисциплины ON
Учебный_ план. ID_ Дисциплина Дисциплины ID_ Дисциплина
WHERE (Количество_ часов > 60) AND (Семестр = 1)
Перенесём условие, связывания в. логическое выражение:
SELECT Наименование, Семестр, Количество_ часов
FROM Учебный_ план, Дисциплины
WHERE (Учебный_ план.ID_ Дисциплина
Дисциплины, ID_ Дисциплина) AND
(Количество_ часов > 60) AND (Семестр =1)
Результат выполнения обоих запросов одинаков (рис. 7.17).
Использование только условия связывания в разделе WHEREаналогично связыванию ключевым словом INNERв разделе FROM.Например, результаты следующих запросов одинаковы (рис. 7.18):
SELECT ТOP 10 Наименование, Семестр, Количество_ часов
FROM Учебный_ план Дисциплины.
WHERE (Учебный_ план. ID_Дисциплина
Дисциплины. ID_ Дисциплина)
SELECT TОP 10 Наименование, Семестр, Количество_ часов
FROM Учебный_ план INNER JOIN Дисциплины ON
Учебный_ план. ID_ Дисциплина Дисциплины. ID_ Дисциплина
Содержимое обеих таблиц можно посмотреть с помощью следующих запросов:
SELECT TOP 10 *
FROM Учебный_ план
Результат примера — на рис. 7.19.
SELECT TOP 10 *
FROM Дисциплины
Результат примера — на рис. 7.20.
Аналогом использования ключевых слов 1.EFT OUTER JOINявляется указание в разделе WHEREусловия с помощью символов *=. Приведенные примеры возвращают одинаковый набор данных:
SELECT Наименование, Семестр, Отчетность
FROM Дисциплины LEFT OUTER JDXN Учебный_ план ON
Учебный план. ID_ Дисциплина Дисциплины. ID_ Дисциплина
WHERE (Наименование KXKE '%информатик %')
SELECT. Наименование, Семестр, Отчетность
FROM Дисциплины, Учебный_ план
WHERE (Учебный план. ID_ Дисциплина *=
Дисциплины. ID_ Дисциплина)
AND (Наименование. LIKE, '% информатик %')
Аналогом использования ключевых слов RIGHT OUTER JOIN является указание условия с помощью символов =*. Приведенные примеры возвращают одинаковый набор данных:
SELECT Отчетность, Семестр, Наименование
FROM Учебный_ план RIGHT OUTER JOIN Дисциплины ON
Учебный план. ID_ Дисциплина = Дисциплины. ID_ Дисциплина
WHERE (Наименование LXKE '%информатик %').
SELECT Отчетность, Семестр, Наименование
FROM Учебный_ план, Дисциплины
WHERE (Учебный план. ID_Дисциплина =*
Дисциплины. ID_ Дисциплина)
AND (Наименование LIKE '% информатик % )
Следует отметить, что при использовании специальных ключевых ядов INNER / {LEFT / RIGHT / FULL } [OUTER ] данные представляются по-иному, чем при указании условия WHERE.Скорость выполнения запроса в первом случае оказывается выше, поскольку организуется связывание данных, тогда как при использовании конструкции WHEREпроисходит их фильтрация. При выполнении запросов на небольших наборах данных это не играет существенной роли, поэтому удобнее обращаться к конструкции WHEREиз-за наглядности и простоты синтаксиса этого варианта, но при построении сложных запросов, выполняющих обработку тысяч строк, все же лучше использовать конструкцию связывания.
Дата добавления: 2015-04-15; просмотров: 685;