Функция Mysql для получения доступных единиц в диапазоне

itajackass спросил: 13 октября 2017 в 07:14 в: mysql

Я ищу функцию для своей конкретной проблемы.

У меня есть компьютер, арендованный системой. Каждая модель ПК доступна в определенном количестве, например, ACER XY = 7 единиц. TOSHIBA ZZ = 5 единиц ...

Пользователь может выбрать дату диапазона (со временем) и (или более 1) МОДЕЛЬ ПК для аренды в этом диапазоне.

Для пример из 2017-12-01 T 13:10.....to.......2017-12-05 T 21:00....with ACER XY (2 единицы для аренды)

Моя функция для поиска в базе данных, если в этом диапазоне есть какая-то запись об аренде с этой моделью ПК и возвращать true или false для отправки формы , (В этом примере принимается до 5 записей ... в общей сложности 7 единиц минус 2 для аренды = 5).

Я не знаю, как подойти.

Для пример, если в базе данных у меня уже есть 2 последовательных события + 1 событие перекрытия, например:

2017-12-02 T 13:10 to  2017-12-05 T 21:00 with ACER XY quantity 1 customer AA
2017-12-05 T 21:00 to  2017-12-07 T 11:00 with ACER XY quantity 3 customer BB
2017-12-07 T 09:00 to  2017-12-09 T 08:00 with ACER XY quantity 3 customer CC

..................

Если я попытаюсь вставить 2017-12-01 T 13:10.....to.......2017-12-05 T 21:00....with ACER XY (2 единицы для аренды), мне нужно вернуть TRUE

Если я попытаюсь с 2017-12-01 T 13:10.....to.......2017-12-05 T 21:10....with ACER XY (5 единиц для аренды) Мне нужно вернуть FALSE

Если я попытаюсь с 2017-12-01 T 13:10.....to.......2017-12-07 T 08:59....with ACER XY (2 единицы для аренды), мне нужно вернуть TRUE

Если я попытаюсь с 2017-12-01 T 13:10.....to.......2017-12-07 T 09:01....with ACER XY (2 единицы для сдачи в аренду) Мне нужно вернуть FALSE

Надеюсь, пример полезен для понимания?

Мои таблицы (упрощенно):

Table RentalTimeline:
ID (INT), start (DATETIME), end (DATETIME), pc_id (INT), quantityForRent (INT), customer_ID (INT)Table PC:
ID (INT), ModelName (varchar), QuantityAvailableTotal (INT)

ОБНОВЛЕНИЕ: @Juan Carlos Oropeza решение, которое, я думаю, не работает, потому что я в этой ситуации: 7 ВСЕГО ПК ACER ДОСТУПНО

и эти 3 события уже в БД (я удаляю раз упростить):

2017-12-02 to  2017-12-15 with ACER quantity 1 customer AA
2017-12-05 to  2017-12-06 with ACER quantity 3 customer BB
2017-12-07 to  2017-12-09 with ACER quantity 3 customer CC

и я пытаюсь вставить событие:

2017-12-01 to  2017-12-20 with ACER quantity 1

С помощью решения @Juan Carlos Oropeza я буду получить ложную причину с моей будущей новой записью я покрою все l 3 события уже вставлены ... и сумма равна 7 (мой максимальный доступный компьютер), но 2 события последовательно, тогда мне нужно вернуть TRUE в этом случае (причина с 12-01 до 12-01 у меня будет 1 ПК (новый вставленный), с 12-02 до 12-04 у меня будет 2 ПК (1 + 1 новый), с 12-05 до 12-06 у меня будет 5 ПК (1 + 3 + 1 новый), с 12-07 до 12-09 у меня будет 5 пк (1 + 3 + 1 нова), с 12-10 до 12-15 у меня будет 2 пк (1 + 1 нова) и с 12-16 до 12-20 У меня будет 1 пк (1 новый))


0 ответов