0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 12
1

Отслеживание событий в базе данных ms sql

16.02.2021, 15:30. Показов 3098. Ответов 26

Author24 — интернет-сервис помощи студентам
Добрый день! Прошу помочь!!! У меня имеется таблица Бронирование в которой содержатся столбцы (код бронирование(ПК), код клиента, код номера, дата начало, дата окончание) и таблица Номера (код номер(ПК), состояние(тип данных логический)).
1)Мне нужно сделать так чтобы, если наступает в записи бронирования, дата окончание ,то соответствующий ему номер освобождался , то есть в таблице номер соответствующая запись меняла бы значение в столбце состояние =0.
2) Допустим если бронь еще идет и эту запись удаляют ,то номер автоматически освобождается
Я делаю приложение на C# Windows Forms ,а База данных Microsoft SQL Server.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.02.2021, 15:30
Ответы с готовыми решениями:

Отслеживание работы сотрудников в базе данных
Добрый день, друзья. Есть несколько загвоздок с базой данных по работе сотрудников (складская)....

Лог событий в базе данных
Добрый день! Подскажите как в программе организовать "лог событий" в базе данных Access? кто что...

Обработка событий базе данных Спортивные мероприятия
В базе данных Спортивные мероприятия имеется форма Мероприятие, в которой отображается информация о...

Обработка событий в Веб-базе данных Access
Здравствуйте форумчане! Объясните, пожалуйста, в чем причина? Я создал веб - базу данных в...

26
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
16.02.2021, 18:35 2
Используйте триггеры
0
Эксперт .NET
12061 / 8369 / 1280
Регистрация: 21.01.2016
Сообщений: 31,560
17.02.2021, 02:29 3
Timur1200, тут не нужны ни события, ни поле состояния. Состояние (забронировано\свободно) вычисляется в момент, когда оно нужно исходя из даты окончания последней брони номера. Введение поля состояния брони ведёт к увеличению энтропии вашей системы (добавляет неоднозначности) и может быть оправданно только в виде оптимизации, когда такие вычисления дороги и их результаты нужно кешировать, что не про ваш случай.
1
0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 12
21.02.2021, 21:45  [ТС] 4
Usaga, Я правильно понимаю? Получается нужно убрать столбец "состояние". И например написать хранимую процедуру, которая будет вычислять свободные/занятые номера
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
22.02.2021, 11:49 5
Timur1200,
.. можно прямо в запросе делать отбор свободных номеров, обращаясь к таблице резервирования и отбирая те RoomId, у которых DateEnd (условно) больше текущей даты ... Кроме того, удалять старые бронирования не всегда нужно, у бухгалтерии/менеджмента могут возникнуть вопросы к истории бронирования ...
0
0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 12
25.02.2021, 10:27  [ТС] 6
carrotik, не понимаю, если написать такой запрос, то просто получится что выйдут записи о тех бронях, срок которых уже истек.
0
Эксперт .NET
12061 / 8369 / 1280
Регистрация: 21.01.2016
Сообщений: 31,560
25.02.2021, 11:17 7
Timur1200, выйдут те записи, которые вы в запросе запросите.
0
0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 12
25.02.2021, 12:09  [ТС] 8
Declare @date datetime = GETDATE()

SELECT код_бронирование,Бронирование.код_номера,дата_начала,дата_окончание,цена
FROM Бронирование,Номер
WHERE @date > дата_окончание and Бронирование.код_номера = Номер.номер
0
Эксперт .NET
12061 / 8369 / 1280
Регистрация: 21.01.2016
Сообщений: 31,560
25.02.2021, 12:16 9
Timur1200, и что вы этим хотели сказать?)
0
0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 12
25.02.2021, 12:46  [ТС] 10
Показал запрос, который у меня получился. Но он у меня неправильный, хочу что бы вы подсказали как правильно написать.
0
Эксперт .NET
12061 / 8369 / 1280
Регистрация: 21.01.2016
Сообщений: 31,560
25.02.2021, 13:19 11
Timur1200, а что вы понимаете под "правильно"? Вы не стесняйтесь поразвёрнутее говорить) Я не телепат)
0
0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 12
25.02.2021, 13:24  [ТС] 12
Написать такой запрос, который должен отображать только те номера, которые свободны
0
Эксперт .NET
12061 / 8369 / 1280
Регистрация: 21.01.2016
Сообщений: 31,560
25.02.2021, 13:26 13
Timur1200, и что? Вы две даты сравнить не можете? Текущую и дату окончания брони?..
0
0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 12
25.02.2021, 13:41  [ТС] 14
Usaga, Мне не понятно, что вы пытаетесь до меня донести, я не телепат. Можно поподробнее объяснение, был бы очень рад, если бы вы исправили бы тот запрос.
0
784 / 615 / 273
Регистрация: 04.08.2015
Сообщений: 1,707
25.02.2021, 14:11 15
Цитата Сообщение от Timur1200 Посмотреть сообщение
Я правильно понимаю? Получается нужно убрать столбец "состояние".
Т.е. останется только ПК и всё? Вам не кажется неестественной таблица с одним столбцом?
Попробуйте так
SQL
1
2
3
4
DECLARE @DATE datetime = GETDATE()
SELECT код_бронирование,Бронирование.код_номера,дата_начала,дата_окончание,цена
FROM Бронирование
WHERE @DATE > дата_окончание
0
0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 12
25.02.2021, 21:01  [ТС] 16
Igr_ok, Насчет таблицы Номера там есть еще столбцы я указал туда цена, категория, но т.к эти столбцы никакого отношения к моей проблеме не имеют поэтому я о них и не писал.
Твой запрос же, просто выводит записи о бронях период которых уже истек. Сомневаюсь что по этим записям как-то можно определить свободные номера.
0
управление сложностью
1687 / 1300 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
26.02.2021, 07:38 17
Timur1200, Вам скорее всего нужно выбрать все данные из справочника номеров с учетом занятых, поэтому должны остаться "пустующие" номера, но это нужно через join, так что изучайте sql
1
0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 12
26.02.2021, 18:38  [ТС] 18
У меня не получается... кто знает как написать запрос, напишите его пожалуйста
0
1514 / 905 / 328
Регистрация: 17.05.2015
Сообщений: 3,417
26.02.2021, 23:42 19
Timur1200, да как можно написать запрос не зная ваших таблиц и как они друг с другом связаны?
0
0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 12
27.02.2021, 17:14  [ТС] 20
Рядовой, Пожалуйста сначала прочтите заголовок темы, а потом только пишите... По-моему там четко написано
про таблицу Бронирование и таблицу Номера
0
27.02.2021, 17:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2021, 17:14
Помогаю со студенческими работами здесь

Кнопка для изменения имеющихся данных в DataGridView и базе данных Sql
Здравствуйте! Помогите пожалуйста приделать кнопку Edit, никак не хочет нормально работать, не...

Как подключиться к базе данных на Wpf. База данных Sql Server
Раньше работал с Windows Worms, и то не долго. Щас хочу перейти на WPF. Я в этом деле еще...

Отслеживание событий
Здравствуйте. Я только начинаю изучать jquery, поэтому прошу строго не судить. Я столкнулся с...

Отслеживание событий
Есть варианты отслеживать события происходящие в программе при контакте с любыми элементами на...

BX отслеживание событий инфоблока
Всем привет! У меня вот такой вопрос: умеет ли битриксовская библиотека BX отслеживать события...

Отслеживание событий клавиатуры
Добрый день. Пишу лабу по Qt. Мне необходимо, чтобы мои элементы управления (пусть для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru