|
Программирование >> Руководство по sql
ТС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 Изменились семь строк:
Наконец, чтобы заполнить столбец третьего автора, воспользуемся оператором UPDATE: SQL: update #au order set au3 = aujd from titleauthors where au ord = 3 and titleauthors. titlejd = au order. title jd Запрос к #au order позволяет получить окончательный результат:
ПРЕДЛОЖЕНИЕ 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 Результат:
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |