Читаем Понимание SQL полностью

odate

For

10/03/1990 ,

there are

5

orders.

For

10/04/1990 ,

there are

2

orders.

For

10/05/1990 ,

there are

1

orders.

For

10/06/1990 ,

there are

2

orders.

Таблица 7.3: Комбинация текста, значений поля, и агрегатов

мы будем описывать в Главе 14. ) Как вы можете видеть, одиночный неизменный комментарий для каждой строки таблицы может быть очень полезен, но имеет ограничения. Иногда изящнее и полезнее, произвести один ком ментарий для всего вывода в целом, или производить свой собственный комментарии для каждой строки.

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

УПОРЯДОЧЕНИЕ ВЫВОДА ПОЛЕЙ

Как мы подчеркивали, таблицы - это неупорядоченные наборы данных, и данные которе выходят из их, не обязательно появляются в какой-то определенной последовательности. SQL использует команду ORDER BY чтобы позволять вам упорядочивать ваш вывод. Эта команда упорядочивает вывод запроса согласно значениям в том или ином количестве выбранных столбцов. Многочисленые столбцы упорядочиваются один внутри другого, также как с GROUP BY, и вы можете определять возрастание (ASC ) или убывание (DESC ) для каждого столбца. По умолчанию установлено - возростание. Давайте рассмотрим нашу таблицу порядка приводимую в порядок с помощью номера заказчика (обратите внимание на значения в cnum столбце):

SELECT *

FROM Orders

ORDER BY cnum DESC;

Вывод показывается в Рисунке 7.4.

SQL Execution Log

SELECT * FROM Orders ORDER BY cnum DESC;

onum

amt

odate

cnum

snum

3001

18.69

10/03/1990

2008

1007

3006

1098.16

10/03/1990

2008

1007

3002

1900.10

10/03/1990

2007

1004

3008

4723.00

10/05/1990

2006

1001

3011

9891.88

10/06/1990

2006

1001

3007

75.75

10/04/1990

2004

1002

3010

1309.95

10/06/1990

2004

1002

3005

5160.45

10/03/1990

2003

1002

3009

1713.23

10/04/1990

2002

1003

3003

767.19

10/03/1990

2001

1001

Таблица 7. 4: Упорядочение вывода с помощью убывания поля

УПОРЯДОЧЕНИЕ С ПОМОЩЬЮ МНОГОЧИСЛЕНЫХ СТОЛБЦОВ

Мы можем также упорядочивать таблицу с помощью другого столбца, например с помощью поля amt, внутри упорядочения поля cnum. (вывод показан в Таблице 7.5 ):

SELECT *

FROM Orders

ORDER BY cnum DESC, amt DESC;

SQL Execution Log

SELECT * FROM Orders

ORDER BY cnum DESC, amt DESC;

onum

amt

odate

cnum

snum

3006

1098.16

10/03/1990

2008

1007

3001

18.69

10/03/1990

2008

1007

3002

1900.10

10/03/1990

2007

1004

3011

9891.88

10/06/1990

2006

1001

3008

4723.00

10/05/1990

2006

1001

3010

1309.95

10/06/1990

2004

1002

3007

75.75

10/04/1990

2004

1002

3005

5160.45

10/03/1990

2003

1002

3009

1713.23

10/04/1990

2002

1003

3003

767.19

10/03/1990

2001

1001

Таблица 7.5: Упорядочение вывода с помощью многочисленых полей

Вы можете использовать ORDER BY таким же способом сразу с любым числом столбцов. Обратите внимание что, во всех случаях, столбцы которые упорядочиваются должны быть указаны в выборе SELECT. Это - требование ANSI которые в большинстве, но не всегда, предписано системе. Следующая команда, например, будет запрещена:

SELECT cname, city

FROM Customers

GROUP BY cnum;

Так как поле cnum не было выбранным полем, GROUP BY не cможет найти его чтобы использовать для упорядочения вывода. Даже если ваша система позволяет это, смысл упорядочения не будет понятен из вывода, так что включение (в предложение SELECT) всех столбцов, используемых в предложении ORDER BY, в принципе желательно.

УПОРЯДОЧЕНИЕ АГРЕГАТНЫХ ГРУПП

ORDER BY может кроме того, использоваться с GROUP BY для упорядочения групп. Если это так, то ORDER BY всегда приходит последним. Вот - пример из последней главы с добавлением предложения ORDER BY. Перед сгруппированием вывода, порядок групп был произвольным; и мы, теперь, заставим группы размещаться в последовательности:

SELECT snum, odate, MAX (amt)

FROM Orders

GROUP BY snum, odate

GROUP BY snum;

Вывод показывается в Таблице 7.6.

SQL Execution Log

SELECT snum, odate, MAX (amt) FROM Orders

GROUP BY snum, odate ORDER BY snum ;

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT