Предположим, у нас есть следующая модель отношений.
первичные ключи для каждого отношения отображаются в полужирном :
Моряки ( sid , имя, рейтинг, возраст)
Лодки ( ставка , название, цвет)
Резерв ( Сид, ставка, день )
Я задал следующий вопрос: «Найти моряка, который забронировал лодку 101 в чаще всего ». Ответ был дан следующим образом:
SELECT S.sid
FROM Sailors S
WHERE UNIQUE (SELECT R.sid
FROM Reserves R
WHERE R.bid = '101' AND S.sid = R.sid)
Чего я не понимаю, так это того, как этот запрос возвращает моряков, которые не зарезервировали эту лодку. Я получаю, что вложенный запрос возвращает все sids от Моряков, которые зарезервировали хотя бы один раз лодку со ставкой = 101.
Затем, используя предложение "UNIQUE", мы требуем, чтобы sids были уникальными, поэтому мы удаляем дубликаты и храним sids от моряков, которые зарезервировали яхту с bid = 101 один раз.
Однако, получаем ли мы как-то моряков, которые никогда не бронировали лодку 101? Если нет, то мы фактически не рассчитываем моряков, которые зарезервировали лодку 101 не более одного раза, а моряков, которые зарезервировали лодку 101 ровно один раз .
Я прав или мне что-то не хватает?