2016-08-04 45 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

謝謝我的朋友我會測試它然後回答結果 –