我正在尝试让会话用户与其他用户共享所有朋友。 这是我的结构:
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;
我的friends_user可以包含浏览用户的会话ID或其他人ID(取决于发送者) 和friends_friend一样,可以包含浏览用户的会话ID,也可以包含发送它的人。 那么我怎样才能得到他们共同的朋友呢?任何帮助都会受到极大的影响。
所以它可能是这样的:
friends_user | friends_friend
1 2
2 3
1 3
5 3
2 5
这是我朋友选择器的sql,但是我需要添加更多代码来与另一个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')
答案 0 :(得分:0)
热门查询为您提供共同的朋友信息,子查询应该为您提供@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')