Как остановить появление чего-то снова, когда оно имеет значение в запросе SQL? - PullRequest
0 голосов
/ 28 апреля 2019

Я знаю, что, возможно, об этом спрашивали раньше, но мне нужна помощь.У меня есть таблица customer с customerID в качестве PK, таблица car с carID в качестве PK и резервирование таблицы с bookingID в качестве PK и carID, customerID в качестве FK.В сетевом представлении я выполнил запрос, чтобы увидеть автомобили и взять их напрокат, как это возможно, чтобы, когда клиент арендует автомобиль, не показывать ему другие автомобили?Другими словами, я хочу, чтобы клиенты с арендной платой не видели доступные автомобили.

1 Ответ

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

Примерно так, если я правильно понял ваш вопрос:

-- Current customer, should come from outside (provided by the application, etc.)
declare @CustomerId int = ...;

select c.*
from dbo.Cars c
where
  -- Exclude cars booked by other customers
  not exists (
    select 0 from dbo.Reservations r
    where r.CarId = c.Id
      and r.CustomerId != @CustomerId
  )
  -- Exclude everything else if the customer already has a booking
  and not exists (
    select 0 from dbo.Reservations r
    where r.CustomerId = @CustomerId
      and r.CarId != c.CarId
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...