Есть 2 таблицы, одна называется пьющими со столбцом имен, другая называется частыми, в которой есть 2 столбца, пьющие и бары (которые они часто посещают).
У меня есть запрос, который отвечает на это утверждение:
Drinkers who frequent all bars
или в другой формулировке:
Drinkers such that there aren’t any bars that they don’t frequent
Теперь вот результирующий запрос:
SELECT d.name
FROM drinkers d
WHERE NOT EXISTS (
SELECT b.name
FROM bars b
WHERE NOT EXISTS (
SELECT *
FROM frequents f
WHERE f.drinker = d.name
AND f.bar = b.name
)
)
Мне сложнее всего следовать логике, когда используются два NOT EXISTS
. Если кто-то может рассказать мне, как понять эти типы запросов, это было бы очень признательно. Спасибо.