Связывание таблиц. Раздел WHEREможет быть использован для связывания таблиц

Раздел 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из-за наглядности и простоты синтаксиса этого варианта, но при построении сложных запросов, выполняющих обработку тысяч строк, все же лучше использовать конструкцию связывания.

Раздел ORDER ВY

Раздел ORDER BYпредназначен для упорядочения набора данных, возвращаемого после выполнения запроса. Рассмотрим пример упорядочения данных таблицы «Дисциплины» по столбцу Наименование в алфавитном порядке:

COLLECT TOP 10 *

FROM Дисциплины

ORDER BY Наименование

Результат сортировки представлен на рис. 7.21.

Полный синтаксис раздела ORDER BYследующий:

ORDER BY {<условие_ сортировки> [ ASC ~ DESC ] } [,...,n]

Параметр <условие сортировки> требует задания выражения, вВ2 соответствии с которым будет осуществляться сортировка строк.

В простейшем случае это выражение представляет собой имя столбца одного из источников данных запроса.

Следует отметить, что в выражении, в соответствии с которым осуществляется сортировка строк, могут использоваться и столбцы, не указанные в разделе SELECT,то есть не входящие в результат выборки.

Раздел ORDERBY разрешает использование ключевых слов ASC и DESCс помощью которых можно явно указать, каким образом следует упорядочить строки. При указании ключевого слова ASCданные будут отсортированы по возрастанию. Если необходимоотсортировать данные по убыванию, указывается ключевое слово DESC.По умолчанию используется сортировка по возрастанию.

Данные можно отсортировать по нескольким столбцам. Для этого необходимо ввести имена столбцов через запятую по порядку сортировки. Сначала данные сортируются по столбцу, имя котороro было указано в разделе ORDER BY первым. Затем, если имеется множество строк с одинаковыми значениями в первом столбце, выполняется дополнительная сортировка этих строк по второму столбцу (внутри группы с одинаковым значением в первом столбце) и т. д.

Приведем пример сортировки по двум столбцам:

SELECT ТОР 20 Наименование, Семестр, Количество_ часов

FROM Учебный_ план, Дисциплины

WHERE (Учебный план. ID_ Дисциплина =

Дисциплины. ID_ Дисциплина)

ORDER BY Семестр, Количество_ часов DESC

Возвращаемый набор строк показан на рис. 7.22.

Добавим в раздел SELECT столбец Отчетность и получим пример сортировки по трем столбцам:

SELECT TOP 20 Наименование, Семестр, Количество_ часов, Отчетность

FROM Учебный_ план, Дисциплины

WHERE (Учебный план. ID_ Дисциплина =

Дисциплины. ID_ Дисциплина)

ORDER BY Семестр, Отчетность, Количество часов

Будет возвращен следующий набор строк, который показан на рис. 7.23.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: