Скачиваний:
25
Добавлен:
01.04.2014
Размер:
761.34 Кб
Скачать

80 Понимание sql

______________________________________________________________________

ГЛ. 7

запроса согласно значениям в том или ином количестве выбранных

столбцов. Многочисленые столбцы упорядочиваются один внутри другого,

также как с 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;

ФОРМАТИРОВАНИЕ ВЫВОДОВ ЗАПРОСОВ 81

______________________________________________________________________

=============== 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.

Перед сгруппированием вывода, порядок групп был произвольным;

Соседние файлы в папке ПОНИМАНИЕ SQL