Как остановить повторное появление результата базы данных после получения значения - PullRequest
1 голос
/ 27 апреля 2019

У меня есть проект проката автомобилей, при аренде доступного автомобиля из таблицы базы данных CAR с car ID в качестве первичного ключа я вставляю данные в таблицу RESERVATION с reservation ID в качестве первичного ключа и car ID в качестве внешнего ключа из car Таблица.

Тем не менее, я не хочу, чтобы машина, которую я арендовал, выглядела как «доступная машина». Какой запрос я должен написать, чтобы скрыть его?

Select cars.* 
from cars, reservation 
where ?

Ответы [ 2 ]

5 голосов
/ 27 апреля 2019

Вам не нужно обновлять таблицы, чтобы скрыть машину.

При выборе списка доступных автомобилей для отображения используйте этот SQL:

SELECT * FROM Car WHERE CarID NOT IN (SELECT CarID FROM Reservation)

Это исключит любые автомобиликоторые уже были зарезервированы.В любом случае, это основная идея.

Вероятно, резервирование действует только на определенный период, и пользователь может пытаться зарезервировать другой период, поэтому вам может понадобиться что-то более сложное, например:

SELECT * FROM Car WHERE CarID NOT IN
(
    SELECT CarID
    FROM   Reservation
    WHERE  StartDate < @DesiredEndDate
    AND    EndDate   > @DesiredStartDate
)

Будет предоставлен список автомобилей, которые не указаны в бронировании, и которые перекрывают желаемое время бронирования пользователя.

0 голосов
/ 27 апреля 2019

Вы можете написать запрос на присоединение как:

Select C.carID
from @Car C
Left join @Reservation R on C.carID = R.carID
where R.reservationID is null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...