zzzzz

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
--запросы для гостиницы
--могут выполнять: все группы пользователей
-- 1.список всех номеров:
SELECT Номер_комнаты, Класс_номера, Количество_мест, Тариф
FROM Номера
ORDER BY Количество_мест DESC, Тариф ASC;
-- 2.номера с определенной стоимостью (и количеством мест)
SELECT Номер_комнаты, Класс_номера, Количество_мест, Тариф
FROM Номера
WHERE Тариф < 4000 --AND Количество_мест = 3 --AND Класс_номера = 'Стандарт'
ORDER BY Тариф ASC, Количество_мест ASC;
-- 3.свободные номера (занятые/на ремонте) (с определенной стоимостью, количеством мест, определенного класса)
SELECT Номер_комнаты, Класс_номера, Количество_мест, Тариф
FROM Номера
WHERE Статус_номера = 'Свободен' --AND Тариф < 4000 --AND Количество_мест = 3 --AND Класс_номера = 'Стандарт'
ORDER BY Количество_мест DESC, Тариф ASC;
--могут выполнять: администратор, директор
-- 4.весь инвентарь из выбранной комнаты
SELECT Инвентарный_номер, Наименование
FROM Инвентарь
WHERE Инвентарь.Номер_комнаты = 10;
/*SELECT Инвентарный_номер, Наименование, Номера.Номер_комнаты AS [Номер комнаты], Количество_мест
FROM Инвентарь INNER JOIN Номера
ON Инвентарь.Номер_комнаты = Номера.Номер_комнаты AND Номера.Номер_комнаты = 10;*/
-- 5.выведет всех клиентов заселенных в номера
SELECT Имя, Фамилия, Отчество, Дата_заселения, Срок, Номер_комнаты
FROM Заселение INNER JOIN Клиенты
ON Заселение.Код_клиента = Клиенты.Код_клиента AND Дата_выселения IS NULL;
/*SELECT Имя, Фамилия, Отчество, Дата_заселения, Срок, Номер_комнаты
FROM Заселение, Клиенты
WHERE Дата_выселения IS NULL AND Заселение.Код_клиента = Клиенты.Код_клиента;*/
-- 6.вывести все заселения за выбранный период
SELECT Имя, Фамилия, Отчество, Дата_заселения, Дата_выселения, Номер_комнаты
FROM Заселение INNER JOIN Клиенты
ON Заселение.Код_клиента = Клиенты.Код_клиента AND Дата_заселения > CONVERT(datetime, '2009.03.10', 101); --AND Дата_выселения < CONVERT(datetime, '2009.03.17', 101);
/*SELECT Имя, Фамилия, Отчество, Дата_заселения, Дата_выселения, Номер_комнаты
FROM Заселение, Клиенты
WHERE Заселение.Код_клиента = Клиенты.Код_клиента AND Дата_заселения > CONVERT(datetime, '2009.02.16', 101); --AND Дата_выселения < CONVERT(datetime, '2009.03.17', 101);*/
-- 7.доход за выбранный период со всех номеров
SELECT SUM(Оплата) AS [Доход за выбранный период]
FROM Заселение
WHERE Дата_заселения > CONVERT(datetime, '2009.02.16', 101) AND Дата_выселения < CONVERT(datetime, '2009.03.17', 101);
--с определенного номера
SELECT SUM(Оплата) AS [Доход за выбранный период]
FROM Заселение
WHERE Дата_заселения > CONVERT(datetime, '2003.02.16', 101) AND Дата_выселения < CONVERT(datetime, '2011.03.17', 101) AND Номер_комнаты = 1;
--с определенного посетителя
SELECT SUM(Оплата) AS [Доход за выбранный период]
FROM Заселение
WHERE Дата_заселения > CONVERT(datetime, '2003.02.16', 101) AND Дата_выселения < CONVERT(datetime, '2011.03.17', 101) AND Код_клиента = 1;
-- 8. Информация о сотрудниках
SELECT Название_должности AS Должность, Имя, Фамилия, Дата_приема, Дата_увольнения, Базовая_ставка
FROM Сотрудники INNER JOIN Трудоустройство
ON Трудоустройство.Код_сотрудника = Сотрудники.Код_сотрудника --AND NOT Дата_увольнения IS NULL
INNER JOIN Должности
ON Трудоустройство.Код_должности = Должности.Код_должности
ORDER BY Базовая_ставка DESC;
--9. Доход сотрудников за выбранный интервал
SELECT Название_должности AS Должность, Имя, Фамилия, DATEDIFF(MONTH, '01.01.2006', '01.04.2006') AS Период, DATEDIFF(MONTH, '01.01.2006', '01.04.2006') * Базовая_ставка AS [Зароботная плата]
FROM Сотрудники INNER JOIN Должности
ON Сотрудники.Код_текущей_должности = Должности.Код_должности;
-- 10. Доход выбранной группы сотрудников
SELECT DATEDIFF(MONTH, '01.01.2006', '01.04.2006') AS Период, SUM(DATEDIFF(MONTH, '01.01.2006', '01.04.2006') * Базовая_ставка) AS [Заработная плата группы сотрудников]
FROM Сотрудники INNER JOIN Должности
ON Сотрудники.Код_текущей_должности = Должности.Код_должности AND Название_должности = 'Администратор';
-- 11. Информация по поставкам
SELECT Контактное_лицо, Поставлено.Код_поставки, Код_сотрудника, Модели.Наименование, Количество
FROM Поставки INNER JOIN Поставщики
ON Поставки.Код_поставщика = Поставщики.Код_поставщика
INNER JOIN Поставлено
ON Поставлено.Код_поставки = Поставки.Код_поставки
INNER JOIN Модели
ON Поставлено.Код_модели = Модели.Код_модели;