Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ud / lab2.docx
Скачиваний:
5
Добавлен:
09.04.2015
Размер:
51.1 Кб
Скачать

Запросы

Далее я вернул таблицы к исходному, заполненному состоянию и выполнил несколько запросов.

Первый запрос выдает список заказов, сделанных 2 ноября 2006 года, а также их суммарную стоимость:

SELECT onum, amt FROM orders

WHERE odate = "2006-11-2"

UNION

SELECT "amount:", sum(orders.amt) FROM orders

WHERE odate = "2006-11-2";

Так выглядит вывод DreamCoder в ответ на запрос:

onum

amt

1

610

2

8255,5

amount:

8865,5

Аналогичный запрос выдает тот же список, но для сегодняшнего дня:

SELECT onum, amt FROM orders

WHERE odate = date (now())

UNION

SELECT "amount:", sum(orders.amt) FROM orders

WHERE odate = date (now());

Естественно, вывод пуст:

onum

amt

amount:

 

Еще один запрос выдает список продавцов и суммарную стоимость обслуживаемых ими заказов:

SELECT sname, sum(orders.amt) FROM salespeople

left JOIN orders on orders.snum = salespeople.snum

GROUP by sname;

Другой вариант написания того же запроса:

SELECT sname,

(SELECT sum(amt)

FROM orders

WHERE snum = salespeople.snum)

FROM salespeople

GROUP by sname;

Мой вариант написания того же запроса, который, в случае отсутствия у продавца заказов, выдает не пустую ячейку во второй колонке, а нуль.

SELECT sname, IFNULL(sum(orders.amt),0) order_sum FROM salespeople

left JOIN orders on orders.snum = salespeople.snum

GROUP by sname;

Так выглядит вывод в ответ на мой вариант запроса:

sname

order_sum

Алиса Тырь

1525

Иван Жадов

0

Максим Хитров

8865,5

Федор Захапов

5160

Этот, последний запрос проделывает аналогичную операцию, но для покупателей:

SELECT cname, sum(orders.amt) FROM customers

left JOIN orders on orders.cnum = customers.cnum

GROUP by cname;

Второй вариант его выполнения:

SELECT cname,

(SELECT sum(amt)

FROM orders WHERE

cnum=customers.cnum)

FROM customers

GROUP by cname;

Легко видеть, что у всех покупателей есть заказы:

cname

sum(orders.amt)

Алексей Шмыга

8255,5

Антон Тотуттотам

1215

Василий Дубов

610

Лариса Тупакова

5160

Петр Быков

310

Вывод

В результате выполнения лабораторной работы я создал новую базу данных, создал несколько триггеров и проверил их работу, а также произвел несколько запросов, причем некоторые из них — в разных вариантах.

Соседние файлы в папке ud