Вот проблема, с которой я сталкиваюсь.У меня есть запрос (который работает), и я хочу, чтобы он возвращал только записи, в которых у пользователя есть записи для каждого предложения EXISTS.Например:
select * from Users
WHERE EXISTS (SELECT *
FROM UserSessions
WHERE UserSessions.UserId = Users.Id
AND SessionId = 1)
AND EXISTS (SELECT *
FROM UserSessions
WHERE UserSessions.UserId = Users.Id
AND SessionId = 2)
AND EXISTS (SELECT *
FROM UserSessions
WHERE UserSessions.UserId = Users.Id
AND SessionId = 3)
Так что в конкретном случае я хочу, чтобы только пользователи имели идентификатор сеанса 1 И, идентификатор сеанса 2 И и идентификатор сеанса 3. Этот запрос работает, но изменение идентификатора сеансаи может быть 1 или 20 различных идентификаторов.
Сейчас я динамически собираю запрос по мере необходимости (в моем серверном приложении) на основе того, какой идентификатор сеанса мне нужен, но мне интересно, есть ли способчтобы написать этот запрос, чтобы я мог просто передать идентификаторы и не собирать их вручную.Вроде как предложение IN
, но которое возвращает только те записи, в которых пользователь присутствует во всех числах в предложении IN
.
Каждое решение, с которым я сталкиваюсь, похоже, представляет собой другую версию этого текущегозапрос, где я должен динамически собрать запрос в зависимости от необходимых идентификаторов сеанса.Есть ли способ сделать это не так динамично?