Страница 2 (Объединение результатов сложных запросов)
Пример 2. Данные - те же, что в примере 1, но задача немного посложнее. Требуется вывести в одной таблице не только индивидуальные размеры заработной платы, упорядоченные по должностям и суммарную заработную плату по должностям, но суммарную заработную плату по всем сотрудникам.
Правильное решение.
Пример 3. В базе данных фирмы есть таблица Staff, содержащая данные о сотрудниках фирмы. В ней есть столбцы Name (фамилия), Dept (номер отдела), и Years (длительность трудового стажа).
Name
|
Dept
|
Years
|
Sanders
|
20
|
7
|
Pernal
|
20
|
8
|
Marenghi
|
38
|
5
|
Doctor
|
20
|
5
|
Factor
|
38
|
8
|
Вывести в одной таблице средний трудовой стаж по отделам и индивидуальные значения длительности трудового стажа сотрудников, сгруппированных по номерам отделов.
Правильное решение.
Страница 2 (Объединение результатов сложных запросов)
Пример 4. В базе данных фирмы есть таблица Staff, содержащая данные о сотрудниках фирмы. В ней есть столбцы Salary (размер заработной платы), Job (должность) и Years (длительность трудового стажа). Первый запрос нужен для получения данных о сотрудниках, заработная плата которых более 21000:
SELECT ID, Name
FROM STAFF WHERE SALARY > 21000
Результатом выполнения запроса будет следующая таблица:
ID
|
Name
|
140
|
Fraye
|
160
|
Molinare
|
260
|
Jones
|
Второй запрос возвращает имена сотрудников, должность которых "менеждер", а число лет трудового стажа - менее 8:
SELECT ID, Name
FROM STAFF WHERE Job = 'Mgr' AND Years < 8 ORDER BY ID
Результатом выполнения запроса будет следующая таблица:
ID
|
Name
|
10
|
Sanders
|
30
|
Marenghi
|
100
|
Plotz
|
140
|
Fraye
|
160
|
Molinare
|
240
|
Daniels
|
Теперь требуются данные, в которых объединены критерии отбора, применённые в двух запросах. Объединяем запросы при помощи оператора UNION:
SELECT ID, Name
FROM STAFF WHERE SALARY > 21000
UNION
SELECT ID, Name
FROM STAFF WHERE Job = 'Mgr' AND Years < 8 ORDER BY ID
Результатом выполнения запроса с оператором UNION будет следующая таблица:
ID
|
Name
|
10
|
Sanders
|
30
|
Marenghi
|
100
|
Plotz
|
140
|
Fraye
|
160
|
Molinare
|
240
|
Daniels
|
260
|
Jones
|
Запрос с оператором UNION может возвращать и большее количество столбцов, важно, повторимся, чтобы в объединяемых запросах число столбцов, порядок их следования и типы данных совпадали.
Теперь работаем с базой данных "Портал объявлений - 1". Скрипт для создания этой базы данных, её таблицы и заполения таблицы данных - в файле по этой ссылке
Do'stlaringiz bilan baham: |