Я сделал систему бронирования автобусов в Postgresql и застрял на том, как проверить, есть ли свободные места при бронировании - PullRequest
0 голосов
/ 16 марта 2020

Как я могу сделать какую-то выписку, проверяя, не превышает ли количество мест количество мест, которое на самом деле имеет автобус?

Сейчас у меня есть следующие таблицы: Бронирование (route_id, mail, мест) --route_id внешний ключ к маршруту (route_id) мест = количество мест для бронирования

Автобус (bus_id, мест, водитель_ss c)

Город (страна, название города, bus_stop, route_id)

Водитель (имя, driver_ss c, телефон, адрес)

Маршрут (Dep, прибытие, Dep_time, прибытие_time, цена, bus_id, route_id)

Путешественник (fn, ln, телефон, адрес, почта, user_id)

Некоторая информация только для того, чтобы выполнить задание, которое я получил.

Пожалуйста, дайте предложения о том, как контролировать места при бронировании. Спросите, нужно ли мне объяснить что-то непонятное. Спасибо!

1 Ответ

0 голосов
/ 17 марта 2020

Я понимаю, что 1 уникальный route_id имеет только 1 уникальный bus_id, верно? Если ответ правильный, этот запрос может вам помочь.

with booking_summary as (
    select 
        route_id, 
        sum(seats) as "total_book_seats"
    from
        booking
    group by route_id
)

select 
    route.route_id, 
    bus.bus_id, 
    booking_summary.total_book_seats, 
    bus.seats 
from
    booking_summary
        join route on booking_summary.route_id = route.route_id
        join bus on route.bus_id = bus.bus_id
where 
    booking_summary.total_book_seats > bus.seats

Идея состоит в том, чтобы рассчитать общее количество забронированных мест в таблице booking_sumary temp. Затем присоедините временную таблицу к другим таблицам, чтобы получить количество мест в автобусе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...