Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Объединение двух или более запросов
Предложение UNION позволяет объединить результаты выполнения нескольких запросов к разным таблицам в одном подмножестве данных, реализуя один запрос. Синтаксис UNION имеет вид: запрос_1 UNION запрос_1 Непременное требование – одинаковые количество и типы полей в объединяемых предложением UNION запросах, хотя второе требование можно обойти, если использовать преобразование типов в запросах. Например: SELECT ”Имя”, “Адрес” FROM “Заказчики” UNION SELECT “Название”, “Адрес” FROM “Поставщики” Следует иметь в виду, что: избыточные дубликаты всегда исключаются из результата UNION. предложением с UNION можно объединить любое число таблиц (проекций таблиц). весь запрос может использовать только одно предложение ORDER BY. Оно применяется ко всему результату и должно находится после последней инструкции SELECT.
Ход работы. 3.1 Задания для самостоятельной работы (БД BookShop)
1. Напишите запрос для вывода названия, автора и цены книг из таблицы Книги. SELECT name, author, price FROM "Book"
2. Напишите запрос для вывода всех уникальных имен авторов книг в текущем порядке из таблицы Книги. SELECT DISTINCT author FROM "Book" ORDER BY author
3. Напишите запрос для вывода всех заказов из таблицы Заказы со значениями суммы оплаты выше 1,000 грн. SELECT zakaz.* FROM zakaz, "Book" WHERE zakaz.num_book="Book".num_book AND "Book".price>1000
4. Напишите запрос к таблице Заказы для вывода всех оплаченных заказов, соответствующих заказчику с именем «Иванов И.». SELECT zakaz.* FROM zakaz, client WHERE zakaz.num_client=client.num_client AND zakaz.pay='Да' AND client.name=' Иванов И.'
5. Напишите запрос для вывода кодов всех книг, их цен и кодов поставщиков для книг, поставленных из Киева. SELECT "Book".num_book,"Book".price, postavchik.num_suppl FROM "Book", postavchik, postavka WHERE postavka.num_book="Book".num_book AND postavka.num_postavchik=postavchik.num_suppl AND postavchik.city='Киев'
6. Напишите запрос для выборки всех заказчиков, чьи имена начинаются с буквы, попадающей в диапазон от A до М. SELECT * FROM client WHERE LEFT(name,1) BETWEEN 'А' AND 'М'
7. Напишите запрос для выборки всех книг, в названии которых есть словосочетание «база данных» или «базы данных» или «баз данных». SELECT * FROM "Book" WHERE name LIKE '%база данных%' OR name LIKE '%базы данных%' OR name LIKE '%баз данных%'
8. Напишите запрос для подсчета суммы всех заказов на 31 января 2014 года.
SELECT SUM("Book".price) FROM "Book", zakaz WHERE "Book".num_book=zakaz.num_book AND zakaz.data='2014-01-31'
9. Напишите запрос для подсчета общей суммы заказов за каждый день с 01.02.14 по 01.04.14. SELECT zakaz.data, SUM("Book".price) FROM "Book", zakaz WHERE "Book".num_book=zakaz.num_book AND zakaz.data BETWEEN '2014-02-01' AND '2014-04-01' GROUP BY zakaz.data
10. Напишите запрос для формирования рейтинга авторов в виде упорядоченного по убыванию списка авторов и количества их книг, проданных за некоторый период. SELECT "Book".author, COUNT(zakaz.*) as cnt FROM "Book", zakaz WHERE "Book".num_book=zakaz.num_book AND zakaz.data BETWEEN '2014-02-01' AND '2014-04-01' GROUP BY "Book".author ORDER BY cnt DESC
3.2 Задания для самостоятельной работы (БД Komunal) 1. Получить списки клиентов, не оплативших на данный момент времени более 1 услуги. По каждому клиенту выдать общую сумму задолженности. SELECT klient.full_name, SUM(schet.dolg) AS zadolj FROM klient, schet WHERE schet.id_klient=klient.id GROUP BY klient.id HAVING SUM(schet.dolg)>0
2. Получить перечень предоставляемых коммунальных услуг с указанием тарифов, среднемесячных объемов потребления. SELECT usluga.name, usluga.price, AVG(schet.volume) AS sred_potreb FROM usluga, schet WHERE schet.id_usluga=usluga.id GROUP BY usluga.id
3. Получить списки клиентов, у которых потребление данного вида коммунальных услуг за последний месяц превышает среднее значение. SELECT klient.full_name, usluga.name, schet.volume, (SELECT AVG(volume) FROM schet WHERE schet.id_klient=klient.id AND schet.id_usluga=usluga.id) AS sred FROM klient, schet, usluga WHERE klient.id=schet.id_klient AND usluga.id=schet.id_usluga AND schet.mes=date_part('month', now()-interval '1 month') AND schet.god=date_part('year', now()-interval '1 month') AND volume > (SELECT AVG(volume) FROM schet WHERE schet.id_klient=klient.id AND schet.id_usluga=usluga.id)
4. Получить ведомость оплаты коммунальных услуг за последний месяц клиентами, проживающими по указанному адресу. Вывести итоговые суммы оплаты по каждому клиенту и по каждому виду услуг. а) сумма оплаты по каждому клиенту, проживающему по адресу "Щорса, 12": SELECT klient.full_name, SUM(schet.oplata) as k_oplate FROM klient, schet WHERE klient.id=schet.id_klient AND schet.mes=date_part('month', now()-interval '1 month') AND schet.god=date_part('year', now()-interval '1 month') AND klient.adres='Щорса, 12' GROUP BY klient.full_name
б) сумма оплаты по каждому виду услуг на адрес "Щорса, 12" SELECT usluga.name, SUM(schet.oplata) as k_oplate FROM usluga, schet, klient WHERE klient.id=schet.id_klient AND usluga.id=schet.id_usluga AND schet.mes=date_part('month', now()-interval '1 month')
AND schet.god=date_part('year', now()-interval '1 month') AND klient.adres='Щорса, 12' GROUP BY usluga.name
5. Получить данные о задолженности по каждому виду коммунальных услуг за каждый месяц с начала года. SELECT usluga.name, schet.mes, SUM(schet.dolg) AS dolg FROM usluga, schet WHERE usluga.id=schet.id_usluga AND schet.god=date_part('year', now()) GROUP BY usluga.name, schet.mes ORDER BY usluga.name, schet.mes
Выводы. Выполняя эту лабораторную работу я научился заполнять таблицы БД нужной информацией углубил свои знания о построении БД, связях между таблицами, сохранением целостности БД. Научился делать выбор нужной информации используя команду SELECT. Используя ее в разных вариациях, комбинациях и ситуациях убедился в ее многогранности и мощности.
4.1 Контрольные вопросы
|
||||||
Последнее изменение этой страницы: 2017-01-25; просмотров: 545; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.51.67 (0.017 с.) |