ogregor
@ogregor
арендатор vpn сервера debian

Как получить запись колонки, которая соответствует каждой из указанных записей другой колонки?

Есть таблица хранящая отношения многие ко многим.

UserId RoomId DateAdd id
2e8ba91e-c091-437a-8823-43c403d52d87 2066 21.08.2017 20:11:15.257 5
2e8ba91e-c091-437a-8823-43c403d52d87 2067 21.08.2017 20:11:40.477 7
5c8de7b8-abb0-417c-971e-b2217d6a3652 2066 21.08.2017 20:11:23.197 6
cacb2d37-0d73-4848-8758-b5af8841b13d 2067 21.08.2017 20:11:43.260 8

Как наилучшим образом получить (или не получить) id комнаты, которому соответствуют все из переданных Id юзеров?

У меня есть решение, но мне кажется что оно не оптимально.

SELECT
  c.RoomId
FROM (SELECT
    UserRooms.RoomId
   ,COUNT(*) AS RoomCount
  FROM dbo.UserRooms
  WHERE UserRooms.UserId IN ('2e8ba91e-c091-437a-8823-43c403d52d87', '5c8de7b8-abb0-417c-971e-b2217d6a3652')
  GROUP BY UserRooms.RoomId) c
WHERE c.RoomCount = 2
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
ogregor
@ogregor Автор вопроса
арендатор vpn сервера debian
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы