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

1 ... 77 78 79 [ 80 ] 81 82 83 ... 105


ТС3218 BU7832 РС8888 PS1372 BUllll TC7777 TC4203

807-91-6654 274-80-9391 427-17-2319 756-30-7391 724-80-9391 672-71-3249 648-92-1872

none none none none none none none

none none none none none none none

Всего имеется семнадцать строк, каждая с auid в столбце первого автора и с попе - в столбцах второго и третьего авторов.

Теперь обновим таблицу ttauorder значениями для столбца второго автора:

SQL:

update tau order set au2 = au id from titleauthors where au ord = 2

and titleauthors.title id = iau order,title id

Изменились семь строк:

Результат:

title id

шозг

56-

7OO8

213-46-

8915

none

PS7777

486-

29-

1786

none

none

none

486-

29-

1786

none

none

МС2222

712-

-45-

1867

none

none

none

172-

32-

-1176

none

none

none

238-

-95-

7766

none

none

BU2075

213-

46-

8915

none

none

PS2091

998-

-72-

-3567

899-46-

2035

none

PS2106

998-

-72-

-3567

none

none

MC3021

722-

-51-

-5454

899-46-

-2035

none

TC3218

807-

-91-

-6654

none

none

BU7832

274-

-80-

-9391

none

none

PC8888

427-

-17-

-2319

846-92

7186

none

PS1372

756-

-7391

724-80-

-9391

none

BUllll

724-

-80-

-9391

267-41-

-2394

none

TC7777

672-

-71-

-3249

267-41-

-2394

none

TC4203

648-

-92-

-1872

none

none

Наконец, чтобы заполнить столбец третьего автора, воспользуемся оператором UPDATE:

SQL:

update #au order set au3 = aujd from titleauthors where au ord = 3

and titleauthors. titlejd = au order. title jd

Запрос к #au order позволяет получить окончательный результат:



SQL:

select *

from #au order

Результат:

title id

BU1032

56-

7OO8

Гз-4~6-

8915

none

PS7777

486-

-29-

-1786

none

none

none

486-

-29-

-1786

none

none

MC2222

712-

-45-

-1867

none

none

none

172-

-32-

-1176

none

none

none

238-

-95-

-7766

none

none

BU2075

213-

-46-

-8915

none

none

PS2091

998-

-72-

-3567

899-46-

-2035

none

PS2106

998-

-72-

-3567

none

none

MC3021

722-

-51-

-5454

899-46-

-2035

none

TC3218

807-

-91-

-6654

none

none

BU7832

274-

-80-

-9391

none

none

PC8888

427-

-17-

-2319

846-92-

-7186

none

PS1372

756-30-

-7391

724-80-

-9391

none

BUllll

724-

-80-

-9391

267-41-

-2394

none

TC7777

672-

-71-

-3249

267-41-

-2394

472-27-2349

TC4203

648-

-92-

-1872

none

none

ПРЕДЛОЖЕНИЕ GROUP BY

Предложение GROUP BY порождает столько вопросов и сомнений, что большинство примеров, найденных в Internet, приведены в следующей главе. Там вы найдете полное описание GROUP BY и его напарника , предложения HAVING. В этом разделе вы встретите только один фрагмент кода. Он связан с использованием GROUP BY для поиска данных по времени.

Отображение данных по времени

Предложение GROUP BY является ответом на следующую интересную проблему: как получить временную статистику? Например, каково распределение по месяцам книг, опубликованных в течение года? Проверьте, есть ли в вашей системе функция наподобие DATEPART, которая отображает указанную часть даты (например, месяц или год) на основании полной даты.

SQL:

select datepart(month, pubdate), count(title id) from titles

group by datepart(month, pubdate)

Результаты отображают фуппу книг, опубликованных в течение шестого месяца: Результат:

NULL 6

13 3



Для удобочитаемости добавим заголовки столбцов: SQL:

select datepart(month, pubdate) as montht, count{title id) as books from titles

group by datepart(month, pubdate)

Результат: monthI

NULL 6

books

13 3

ПОСЛЕДОВАТЕЛЬНЫЕ НОМЕРА

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

Некоторые разработчики баз данных реализуют эту возможность. В Oracle предусмотрено средство Sequencer, в Informix - тип данных SERIAL, а Sybase и Microsoft обеспечивают свойство IDENTITY.

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

В этом разделе вы узнаете о нескольких возможных способах добавления последовательных номеров в поле sonum. Они включают нахождение текущего максимального значения sonum, добавление 1 и сохранение этого максимального значения в отдельной таблице. Кроме того, мы рассмотрим одну из альтернатив последовательным номерам - использование уникального произвольного значения.

Для простоты во всех последующих примерах sonum используется в первых пяти строках таблицы sales. Если вы хотите самостоятельно проверить все приведенные здесь примеры, сначала удалите все строки sales со значение sonum выще 5. (Эти строки можно сохранить в другой таблице.)

SQL:

delete from sales where sonum > 5

Вот как выглядят эти данные:

SQL:

select * from sales Результат:

sonum

stor id

ponum

sdate

7066

QA7442.3

Sep 13 19?5 12 : 00AM

7067

D4482

Sep 14 1985 12 : 00AM

7131

N914008

Sep 14 1985 12 : 00AM

7131

N914014

Sep 14 198512 : 00AM

8042

423LL922

Sep 14 198512 : 00AM



1 ... 77 78 79 [ 80 ] 81 82 83 ... 105

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