Программирование >>  Руководство по sql 

1 ... 30 31 32 [ 33 ] 34 35 36 ... 105


в примерах этой книги используется кодовая страница 850 и двоичный порядок сортировки. Список символов этой страницы выглядит следующим образом:

Binary Sort Order for Code Page 850 (cp850). Characters, in Order ! #$%&()*+,/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]Vabc

ciefghijklmnopqrstuvwxyz{}~n □ □,/.....tt %oe<etZZD -

- s>stiz--LnAj§-©§<<--®2°±j-MU§>>lrz[AAMLCgCEEEiiDDNivi0000xft UUYTBfaaaalcgceeeiicfdnfioeoofuuuuyt-

Как выполняется сортировка

Предположим, что вы хотите получить список цен, идентификационных номеров и номеров издателей из таблицы titles. Для этого можно вьшолнить следующий запрос:

SQL:

select price.

title id.

pub id

from titles

Результат:

price

title id

pub id

PC8888

1389

19.99

BU1032

1389

7.99

PS7777

0736

19.99

PS3333

0736

11.95

BUllll

1389

19.99

MC2222

0877

14.99

TC7777

0877

11.95

TC4203

0877

22.95

PC1035

1389

NULL

MC3026

0877

2.99

BU2075

0736

10.95

PS2091

0736

PS2106

0736

2.99

MC3021

0877

20.95

TC3218

0877

19.99

BU7832

1389

21.59

PS1372

0736

NULL

PC9999

1389

В этом списке представлена вся запрошенная вами информация, но разбираться в ней не удобно, так как результат неупорядочен. Чтобы сделать эту информацию более полезной, ее надо отсортировать по цене. Это делается следующим образом:

SQL:

select price, title id, pub id from titles order by price

Результат:

price title id pub id

NULL MC3026 0877

NULL PC9999 1389



2.99

МС3021

0877

2.99

BU2075

0736

PS2106

0736

7.99

PS7777

0736

10.95

PS2091

0736

11.95

BUllll

1389

11.95

TC4203

0877

14.99

TC7777

0877

19.99

MC2222

0877

19.99

BU7832

1389

19.99

PS3333

0736

19.99

BU1032

1389

PC8888

1389

20.95

TC3218

0877

21.59

PS1372

0736

22.95

PC1035

1389

Теперь строки будут отсортированы по цене.

Синтаксис предложения ORDER BY

Общая форма предложения ORDER BY в операторе SELECT имеет следующий вид:

SELECT список выбора FROM список таблиц [WHERE условия]

[ORDER BY {выражение [ASC DESC] позиция [ASC DESC]} [ , {выражение [ASC ) DESC] позиция [ASC DESC] } ]...]

В больщинстве (но не во всех) систем требуется, чтобы каждый элемент, по которому выполняется сортировка (столбец или выражение), присутствовали в списке выбора. Для выражений имеется три возможности: можно использовать целое число, описывающее позицию выражения в списке выбора, использовать заголовок столбца, определенный в списке выбора (price * ytd sales as income), или использовать выражение целиком. Детали этого для пяти различных систем приведены в Приложении Б. За подробностями также обращайтесь к руководству по своей системе.

Сортировка внутри сортировки

Итак, мы получили результат, отсортированный по ценам. Однако было бы неплохо, чтобы книги в каждой ценовой категории, выпущенные одним издателем, щли в списке рядом. Для этого в список ORDER BY нужно добавить столбец pubJd:

SQL:

select price, title id, pub id from titles

order by price, pub id Результат:

price title id pub id

NULL MC3026 0877

NULL PC9999 1389

2.99 BU2075 0736



2.99

МС3021

0877

PS2106

0736

7.99

PS7777

0736

10.95

PS2091

0736

11.95

ТС4203

0877

11.95

BUllll

1389

14.99

TC7777

0877

19.99

PS3333

0736

19.99

MC2222

0877

19.99

BU7832

1389

19.99

BU1032

1389

PC8888

1389

20.95

TC3218

0877

21.59

PS1372

0736

22.95

PC1035

1389

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

Количество уровней сортировки может быть любым. Во многих системах требуется, чтобы элемент, по которому ведется сортировка, присутствовал в списке выбора, однако порядок их перечисления в предложении ORDER BY не обязан совпадать с порядком перечисления столбцов и выражений в операторе SELECT. Если в предыдущем примере поменять порядок сортировки так, чтобы результаты сначала упорядочивались по столбцу pub id, а затем по столбцу price, результат изменится следующим образом:

SQL:

select price, title id, pub id from titles

order by pub id, price Результат:

price

title id

pub id

1799

BU207~5

0736

PS2106

0736

7.99

PS7777

0736

10.95

PS2091

0736

19.99

PS3333

0736

21.59

PS1372

0736

NULL

MC3026

0877

2.99

MC3021

0877

11.95

TC4203

0877

14.99

TC7777

0877

19.99

MC2222

0877

20.95

TC3218

0877

NULL

PC9999

1389

11.95

BUllll

1389

19.99

BU7832

1389



1 ... 30 31 32 [ 33 ] 34 35 36 ... 105

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика