0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 12
|
|
1 | |
Отслеживание событий в базе данных ms sql16.02.2021, 15:30. Показов 3098. Ответов 26
Добрый день! Прошу помочь!!! У меня имеется таблица Бронирование в которой содержатся столбцы (код бронирование(ПК), код клиента, код номера, дата начало, дата окончание) и таблица Номера (код номер(ПК), состояние(тип данных логический)).
1)Мне нужно сделать так чтобы, если наступает в записи бронирования, дата окончание ,то соответствующий ему номер освобождался , то есть в таблице номер соответствующая запись меняла бы значение в столбце состояние =0. 2) Допустим если бронь еще идет и эту запись удаляют ,то номер автоматически освобождается Я делаю приложение на C# Windows Forms ,а База данных Microsoft SQL Server.
0
|
16.02.2021, 15:30 | |
Ответы с готовыми решениями:
26
Отслеживание работы сотрудников в базе данных Лог событий в базе данных Обработка событий базе данных Спортивные мероприятия Обработка событий в Веб-базе данных Access |
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
|
|
16.02.2021, 18:35 | 2 |
Используйте триггеры
0
|
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
|
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
|
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
|
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
|
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 | |||||
Т.е. останется только ПК и всё? Вам не кажется неестественной таблица с одним столбцом?
Попробуйте так
0
|
0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 12
|
|
25.02.2021, 21:01 [ТС] | 16 |
Igr_ok, Насчет таблицы Номера там есть еще столбцы я указал туда цена, категория, но т.к эти столбцы никакого отношения к моей проблеме не имеют поэтому я о них и не писал.
Твой запрос же, просто выводит записи о бронях период которых уже истек. Сомневаюсь что по этим записям как-то можно определить свободные номера.
0
|
управление сложностью
|
|
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 | |
27.02.2021, 17:14 | |
Помогаю со студенческими работами здесь
20
Кнопка для изменения имеющихся данных в DataGridView и базе данных Sql Как подключиться к базе данных на Wpf. База данных Sql Server Отслеживание событий Отслеживание событий BX отслеживание событий инфоблока Отслеживание событий клавиатуры Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |