我有三个表,聊天,用户和chat_user,聊天可以有多个用户,用户可以有多个聊天。我想要得到的聊天是所有给定的用户is共同。
聊天 (id)
用户 (id)
chat_user (id,chat_id,user_id)
我想得到属于用户1和5或多个用户ids的聊天。
编辑
我使用的是Laravel框架,所以如果有一种方法通过父表(用户、聊天)获得结果会更好。
但任何帮助都将不胜感激。
发布于 2018-09-15 17:38:47
您可能需要加入表chats (包含您想要的信息的表)和表chat_user (包含聊天和用户的id ),以便在联接的表上应用where子句。
在拉勒维尔,我不知道。
SELECT c.*
FROM `chats` c
JOIN `chat_user` cu
ON c.id = cu.chat_id
WHERE cu.chat_id NOT IN (
SELECT cuu.chat_id
FROM chat_user cuu
WHERE cuu.user_id NOT IN (1, 5))发布于 2018-09-15 17:56:32
我猜userId在这里将是一个输入参数吗?请尝试以下查询:
SELECT
*
from
chats
WHERE
id in (
SELECT
chat_id
from
chat_user
WHERE
user_id = '1'
OR user_id = '5'
group by
chat_id
having
count(*) = 2
)count(*)=2将只确保那些同时存在用户1和5的聊天。
https://stackoverflow.com/questions/52347096
复制相似问题