Mysql 我正试图从数据库中选择共同的朋友,我如何才能做到这一点?
我正在尝试获取会话用户与其他用户的所有共同好友。 这是我的结构:Mysql 我正试图从数据库中选择共同的朋友,我如何才能做到这一点?,mysql,sql,Mysql,Sql,我正在尝试获取会话用户与其他用户的所有共同好友。 这是我的结构: CREATE TABLE `friends` ( `friends_id` int(11) NOT NULL, `friends_user` int(11) NOT NULL, `friends_friend` int(11) NOT NULL, `friends_date_added` datetime NOT NULL, `friends_enabled` varchar(15) NOT NULL DEFA
CREATE TABLE `friends` (
`friends_id` int(11) NOT NULL,
`friends_user` int(11) NOT NULL,
`friends_friend` int(11) NOT NULL,
`friends_date_added` datetime NOT NULL,
`friends_enabled` varchar(15) NOT NULL DEFAULT 'enabled'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
My friends\u用户可以包含浏览用户的会话ID或其他人员ID(取决于发送它的人)
对于friends\u friend也一样,它可以包含浏览用户的会话id或发送会话id的人。
那么我怎样才能得到他们共同的朋友呢?任何帮助都是非常感谢的
所以可能是这样的:
friends_user | friends_friend
1 2
2 3
1 3
5 3
2 5
这是sql for my friend选择器,但我需要添加更多代码以获得具有其他id的共同好友:
SELECT * FROM friends
LEFT JOIN users
ON users.user_id = friends.friends_user AND friends.friends_user != ?
OR users.user_id = friends.friends_friend AND friends.friends_friend != ?
LEFT JOIN user_personal_information
ON users.user_id = user_personal_information.user_personal_information_user
WHERE (friends_user = ?
AND friends_enabled = 'enabled'
AND users.user_enabled = 'enabled')
OR (friends_friend = ?
AND friends_enabled = 'enabled'
AND users.user_enabled = 'enabled')
顶部查询将获取共同的好友信息,子查询将获取@myid和@theirid共享的好友
SELECT *
FROM users
WHERE users.user_id IN (SELECT me.friends_friend
FROM friends AS me
JOIN friends AS them ON me.friends_friend = them.friends_friend
WHERE me.friend_user = @myid
AND them.friend_user = @theirid
AND me.friends_enabled = 'enabled'
AND them.friends_enabled = 'enabled')
互联网对共同的朋友说了些什么?我不明白,抱歉,这里有一个伪代码:选择所有用户的朋友作为set1,然后选择所有其他用户的朋友作为set2,然后在他们相同的地方将他们连接在一起-这将给你你要找的列表