MYSQL select mutual friends

梦想与她 提交于 2019-11-28 02:01:30

问题


My 'friends' table has the following columns: id, userID, userID2, state

userID and userID2 don't have a specific order of being put into the database.

I currently use this query to find a users friends:

$quer = mysql_query("
SELECT CASE WHEN userID=$id THEN userID2 ELSE userID END AS friendID 
FROM friends WHERE userID=$id OR userID2=$id");

I have tried this however it doesn't work:

SELECT 
CASE WHEN userID=$id OR userID=$session THEN userID2 
ELSE userID END AS friendID  
FROM friends WHERE (userID=$session OR userID2=$session) 
AND (userID=$id OR userID2=$id) AND friendID!=$session

also it shouldn't return the row if friendID=$session (which i have added to my second query)

EDIT: I want to return as friendID rows that $id and $session have in common. I'm not exactly sure why it isn't working.


回答1:


After the explanations (and actually reading the "mutual" part):

SELECT a.friendID
FROM
      ( SELECT CASE WHEN userID = $id
                      THEN userID2 
                      ELSE userID 
               END AS friendID 
        FROM friends 
        WHERE userID = $id OR userID2 = $id
      ) a
  JOIN
      ( SELECT CASE WHEN userID = $session
                      THEN userID2 
                      ELSE userID 
               END AS friendID 
        FROM friends 
        WHERE userID = $session OR userID2 = $session
      ) b
    ON b.friendID = a.friendID 


来源:https://stackoverflow.com/questions/8906154/mysql-select-mutual-friends

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!