Материал: 2391

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Выбор записей по диапазону значений (Between).

12. Вывести список сотрудников и размеры полученных зарплат за период 01.01.2003 по 01.03.2003 (рис. 7):

– в VFP:

SELECT Name, Lastname, Surname, Sum_pay, Pay_day FROM Staff, Pay WHERE (Staff.T_number = Pay.T_number) AND Pay_day BETWEEN CTOD(‘01.01.2003’) AND CTOD(‘01.03.2003’)

Name

Lastname

Surname

Sum_pay

Pay_day

Иван

Петрович

Иванов

2544.00

01.01.2003

Иван

Петрович

Иванов

4521.00

01.02.2003

Иван

Петрович

Иванов

12542.00

01.03.2003

Василий

Михайлович

Сидоров

1452.00

01.01.2003

Василий

Михайлович

Сидоров

2145.00

01.02.2003

Василий

Михайлович

Сидоров

2135.00

01.03.2003

Петр

Аркадьевич

Васильков

4511.00

01.01.2003

Петр

Аркадьевич

Васильков

1542.00

01.02.2003

Петр

Аркадьевич

Васильков

1542.00

01.03.2003

Савел

Игнатьевич

Соянов

2456.00

01.03.2003

Рис. 7. Выбор по диапазону

– в MS SQL Server:

SELECT Name, Lastname, Surname, Sum_pay FROM Staff, Pay WHERE (Staff.T_number = Pay.T_number) AND Pay_day BETWEEN '1-JAN-2003' AND '1-MAR-2003'

или

SET DATEFORMAT dmy

SELECT Name, Lastname, Surname, Sum_pay FROM Staff, Pay WHERE (Staff.T_number = Pay.T_number) AND Pay_day BETWEEN '1-01-2003' AND '1-03-2003'

– в Access:

SELECT Name, Lastname, Surname, Sum_pay FROM Staff, Pay WHERE (Staff.T_number = Pay.T_number) AND Pay_day BETWEEN #01.01.2003# AND #01.03.2003#

– в Oracle:

SELECT Name, Lastname, Surname, Sum_pay FROM ADMIN_PAY.Staff, ADMIN_PAY.Pay WHERE (Staff.T_number = Pay.T_number) AND Pay_day BETWEEN '1-JAN-2003' AND '1-MAR-2003';

или

SELECT Name, Lastname, Surname, Sum_pay FROM ADMIN_PAY.Staff, ADMIN_PAY.Pay WHERE (Staff.T_number = Pay.T_number) AND Pay_day

23

BETWEEN to_date('1-01-2003','dd-mm-yyyy') AND to_date('1-03-2003','dd- mm-yyyy');

BETWEEN – проверка на принадлежность диапазону значений. При этом проверяется, находится ли значение поля между двумя определенными значениями.

Особенности оформления дат в различных СУБД .

ВAccess дата заключается в решетки # # (формат дд.мм.гггг).

ВVFP оформляется как строка и преобразуется в формат даты с помощью функции CTOD( ).

ВMS SQL Server можно задать как строку в двойных кавычках в формате дд-мес-гггг (где месяц может быть оформлен как JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC).

13.Вывести список сотрудников, которые были устроены на работу

впериод с 12.03.2000 по 15.06.2000, и их должности:

– в VFP:

SELECT Name, Lastname, Surname, Post FROM Staff WHERE Date_input BETWEEN CTOD(‘12.03.2000’) AND CTOD(‘15.06.2000’)

– в MS SQL Server:

SELECT Name, Lastname, Surname, Post FROM Staff WHERE Date_input BETWEEN '12-MAR-2000' AND '15-JUN-2000'

– в MS Access:

SELECT Name, Lastname, Surname, Sum_day FROM Staff WHERE Date_input BETWEEN #12.03.2000# AND #15.06.2000#

– в Oracle:

SELECT Name, Lastname, Surname, Post FROM ADMIN_PAY.Staff WHERE Date_input BETWEEN to_date('12-03-2000', 'dd-mm-yyyy') AND to_date('15-06-2000', 'dd-mm-yyyy');

14. Вывести список сотрудников и их телефоны, значения которых находятся в диапазоне с 111111 по 222222:

– в VFP, MS SQL Server, Access:

SELECT Name, Lastname, Surname, Phone FROM Staff WHERE Phone BETWEEN 111111 AND 222222

– в Oracle:

SELECT Name, Lastname, Surname, Phone FROM ADMIN_PAY.Staff WHERE Phone BETWEEN 111111 AND 222222;

24

15. Вывести список сотрудников, у которых фамилия начинается на одну из букв диапазона ‘Р’ – ‘У’:

– в VFP, MS SQL Server, Access:

SELECT Name, Lastname, Surname FROM Staff WHERE Surname BETWEEN 'Р' AND 'У'

– в Oracle:

SELECT Name, Lastname, Surname FROM ADMIN_PAY.Staff WHERE

Surname BETWEEN 'Р' AND 'У';

Выбор записей по диапазону значений (In).

16. Вывести список сотрудников с должностями ‘начальник отдела кадров’, ‘специалист отдела кадров’, ‘операционист отдела кадров’:

– в VFP, MS SQL Server, Access:

SELECT Name, Lastname, Surname, Post FROM Staff WHERE Post IN('начальник отдела кадров', 'специалист отдела кадров', 'операционист отдела кадров')

– в Oracle:

SELECT Name, Lastname, Surname, Post FROM ADMIN_PAY.Staff WHERE Post IN('начальник отдела кадров', 'специалист отдела кадров', 'операционист отдела кадров');

IN( ) – проверка на членство в множестве. Вывести только те строки, у которых значение указанного поля принадлежит указанному множеству, т.е. равно одному из значений, перечисленных в IN( ).

17. Вывести список сотрудников, получающих одну из следующих надбавок к зарплате: ‘премию’, ‘оплату учебы’, ‘поощрение’:

– в VFP, MS SQL Server, Access:

SELECT Name, Lastname, Surname FROM Staff, Pay, Items_pay WHERE (Staff.T_number = Pay.T_number) AND (Pay.Code_pay = Items_pay.Code_pay) AND (Item_pay IN('премия', 'оплата учебы', 'поощрение'))

– в Oracle:

SELECT Name, Lastname, Surname FROM ADMIN_PAY.Staff,

ADMIN_PAY.Pay, ADMIN_PAY.Items_pay WHERE (Staff.T_number =

Pay.T_number) AND (Pay.Code_pay = Items_pay.Code_pay) AND (Item_pay

IN('премия', 'оплата учебы', 'поощрение'));

18. Вывести список сотрудников с табельными номерами 4, 67, 45,

77(рис. 8):

–в VFP, MS SQL Server, Access:

25

SELECT Name, Lastname, Surname, T_Number FROM Staff WHERE T_Number IN(4, 67, 45, 77)

– в Oracle:

SELECT Name, Lastname, Surname, T_Number FROM ADMIN_PAY.Staff WHERE T_Number IN(4, 67, 45, 77);

Name

Lastname

Surname

T_number

Иван

Васильевич

Артемьев

67

Савел

Игнатьевич

Соянов

4

Рис. 8. Список сотрудников по указанным номерам

Выбор записей с использованием Like.

19. Вывести неповторяющийся список статей в зарплате, которые начинаются на букву ‘н’:

– в MS SQL Server(регистр текста не важен):

SELECT DISTINCT Item_pay FROM Items_pay WHERE Item_pay LIKE 'н%'

– в Access:

SELECT DISTINCT Item_pay FROM Items_pay WHERE Item_pay LIKE “н*”

– в Oracle (регистр текста учитывается):

SELECT DISTINCT Item_pay FROM ADMIN_PAY.Items_pay WHERE Item_pay LIKE 'н%';

LIKE( ) – проверка на соответствие шаблону, где шаблон записывается в двойных кавычках. % или * – подстановочный знак в шаблоне, совпадающий с любой последовательностью из нуля и более символов.

_ или ? – подстановочный знак в шаблоне, совпадающий с одним любым символом на указанном месте. Пример шаблона на Access: "?нар*" – вывести все строки, у которых первый символ любой, далее обязательная последовательность нар, конец строки любой.

20. Вывести список сотрудников, отчества которых содержат сочетание букв ‘ва’:

– в VFP, MS SQL Server:

SELECT Name, Lastname, Surname FROM Staff WHERE Lastname LIKE '%ва%'

26

– в Access:

SELECT Name, Lastname, Surname FROM Staff WHERE Lastname LIKE “*ва*”

– в Oracle:

SELECT Name, Lastname, Surname FROM ADMIN_PAY.Staff WHERE Lastname LIKE '%ва%';

21. Выбрать неповторяющийся список должностей, у которых значение оканчивается на ‘ль’ (рис. 9):

– в VFP, MS SQL Server:

SELECT DISTINCT Post FROM Staff WHERE Post LIKE '%ль'

Post

Строитель

Рис. 9. Результат запроса с использованием Like

– в Access:

SELECT DISTINCT Post FROM Staff WHERE Post LIKE “*ль”

– в Oracle:

SELECT DISTINCT Post FROM ADMIN_PAY.Staff WHERE Post LIKE '%ль';

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

15.03.2003 в размере от 2000 до 3000 руб.:

– в VFP:

SELECT Name, Lastname, Surname FROM Staff, Pay WHERE (Staff.T_number = Pay.T_number) AND Pay_day = CTOD(‘15.03.2003’) AND ((Sum_pay>=2000) AND (Sum_pay<3000))

– в MS SQL Server:

SELECT Name, Lastname, Surname FROM Staff, Pay WHERE (Staff.T_number = Pay.T_number) AND Pay_day = '15-MAR-2003' AND ((Sum_pay>=2000) AND (Sum_pay<3000))

– в Access:

SELECT Name, Lastname, Surname FROM Staff, Pay WHERE (Staff.T_number = Pay.T_number) AND Pay_day = #15.03.2003# AND ((Sum_pay>=2000) AND (Sum_pay<3000))

– в Oracle:

SELECT Name, Lastname, Surname FROM ADMIN_PAY.Staff, ADMIN_PAY.Pay WHERE (Staff.T_number = Pay.T_number) AND Pay_day = '15-MAR-2003' AND ((Sum_pay>=2000) AND (Sum_pay<3000));

27

Источник: https://studfile.net/preview/16408448/