2016-08-04 94 views
-2

我有两个表,其中一个表用于一个人的朋友,另一个表用于渠道成员。如何比较mysql中的2个表并检查结果

我想检查我的一个朋友是否是渠道成员之一。如果是这样,不要显示他的名字,否则给他看看。

$get_friend = "select * from friends where user_1_id='$user_id' AND friends_status=1"; 
$run_friend = mysqli_query($conn,$get_friend); 

$select_members = "SELECT user_id from channel_members where channel_id='$channel_id'"; 
$run_members = mysqli_query($conn,$select_members); 
+0

的成员,你所有的朋友,你能解释一下你的表一点?您的朋友表中名为朋友用户标识的列的名称是什么? – Philipp

+0

是在朋友表中我有3列user_1_id,user_2_id,friends_status –

+0

实际上我想添加一个频道的朋友,我想比较一下如果用户已经添加到频道那么不要再添加它们 –

回答

0

尝试此查询:

select * from friends where user_1_id='$user_id' AND friends_status=1 AND user_2_id NOT IN(SELECT user_id from channel_members where channel_id='$channel_id') 

这将选择来自朋友的表不属于通道“$ CHANNEL_ID”

+0

非常感谢你对我很好的工作 –

0
SELECT 
    friends.* 
FROM 
    friends 
LEFT JOIN channel_members 
    ON channel_members.channel_id = '$channel_id' 
     AND channel_members.user_id = friends.user_2_id 
WHERE 
    user_1_id = '$user_id' 
     AND friends_status = 1 
     AND channel_members.channel_id IS NULL 

您可以使用此查询。

我添加了一个不包括LEFT JOIN

它会尝试将频道中您的朋友的成员加入到结果中,但通过在where子句中指定channel_members.channel_id IS NULL来过滤那些真正在频道中拥有成员的数据集 - 只留下不在频道中的朋友。

+0

谢谢我的朋友我会测试它然后回答结果 –