Добрый день, уважаемые участники сообщества. Я снова к вам за помощью. Помогите разобраться. У меня есть бд(в прикрепленном файле)
Не могу понять, как выполнить вот эти пункты:
- Запретить записывать клиента к барберу на уже занятое
время и дату
В этом случае по всей видимости триггер, я сделал что-то вроде:
create trigger tg_booking_taboo on bookings
after insert
as
begin
if exists(select*from
bookings b,inserted i
where b.start_time=i.start_time and b.barber_id=i.barber_id
and b.week_day_id=i.week_day_id)
begin
rollback tran
print('This date is busy')
end
end
Но это, естественно, не правильно и я не пойму, как реализовать то,чтобы учитывалось расписание барбера, продолжительность услуги и так далее.
- Показать свободные временные слоты на неделю конкрет-
ного барбера. Информация о барбере и дне передаётся
в качестве параметра
Ну и здесь подобная ситуация, только тут я решил сделать хранимую процедуру. Я связываю джоинами все, на мой взгляд, нужные таблицы, но как учесть остальное:
create proc sp_free_time @day nvarchar(30),@name nvarchar (50),@surname nvarchar(50)
as
begin
select b.f_name,b.l_name
from [services] s join barber_service bs on s.id=bs.service_id
join barbers b on b.id=bs.barber_id
join schedule sc on sc.barber_id=b.id
join week_days w on w.id=sc.week_day_id
join bookings bk on bk.week_day_id=w.id
where @day=w.name and @name=b.f_name and @surname=b.l_name
end
Barber_shop_db.txt (6.4 КБ)