2013-06-23 3 views
-3

У меня есть база данных, содержащая usersconversationsconversation_user.Проверка наличия двух пользователей в одном разговоре

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

В этом случае user1 и user2 беседуют.

enter image description here

+2

Какой код у вас есть на данный момент? –

+1

Что такое столбец 'id', если пара' (convers_id, user_id) 'должна быть уникальной? –

+0

To downvoters - как это не настоящий вопрос? –

ответ

2

Это будет список всех conversation_id, что пользователь 1 и пользователь 2 имеют общие черты:

SELECT conversation_id 
FROM  conversations 
WHERE user_id IN (1, 2) 
GROUP BY conversation_id 
HAVING COUNT(DISTINCT user_id)=2 

Пожалуйста, смотрите скрипку here.

+0

Это работает просто отлично! –

+0

спасибо! это тоже помогло мне! : D –

0
select count('x') 
from 
    conversation_user x 
where 
    (x.userid1 = 1 and x.userid2 = 2) or 
    (x.userid1 = 2 and x.userid2 = 1) 

Если этот запрос возвращает 0, то они не имеющие разговор. В противном случае.

0

Самостоятельно присоединиться могли бы сделать это:

SELECT c.conversation_id 
FROM conversations c 
JOIN conversations c2 
    ON c.conversation_id=c2.conversation_id 
WHERE c.user_id=<x> AND c2.user_id=<y>