Eu tenho 2 mesas. 1 contendo meus tópicos e 1 contendo os usuários vinculados a esses tópicos.
Eu quero encontrar o ThreadID com 2 UserIDs específicos anexados, nem mais nem menos.
Isto é o que eu vim com:
SELECT mt.ThreadID
FROM MessagesThreads AS mt
WHERE (SELECT COUNT(DISTINCT mtau.UserID)
FROM MessagesThreadsAccessUsers AS mtau
WHERE
mtau.ThreadID = mt.ThreadID
AND EXISTS (
SELECT 0
FROM MessagesThreadsAccessUsers AS mtau2
WHERE mtau2.ThreadID = mtau.ThreadID
AND mtau2.UserID = 1
)
AND EXISTS (
SELECT 0
FROM MessagesThreadsAccessUsers AS mtau2
WHERE mtau2.ThreadID = mtau.ThreadID
AND mtau2.UserID = 2
)
) = 2
Esta situação específica é sobre encontrar o ThreadID com UserID 1 e UserID 2 anexados. Se nenhum ThreadID for encontrado, preciso criar um novo mais adiante no caminho.
Minha pergunta é: esta é a melhor maneira de consultar isso ou pode ser mais inteligente?