无论建议与当前session_user之间是否有共同朋友,我都想向用户推荐一些朋友。
以下是我的尝试:
$sess = htmlspecialchars(mysqli_real_escape_string($con, $_SESSION['user_id']));
$qet = mysqli_query($con, "SELECT user.id AS id, user.name AS name, user.u_name AS u_name, user.profile_pic AS profile_pic
FROM user INNER JOIN user_friend ON (user.id = user_friend.add_by_id) OR (user.id = user_friend.add_to_id)
WHERE (user_friend.add_to_id != '$sess' or user_friend.add_by_id != '$sess') AND (user.id != '$sess')
ORDER BY RAND() LIMIT 1");
我的表结构:
user_friend
- ID
- add_by_id
- add_to_id
- ADDED_ON
- 接受
醇>
用户
- ID
- 名称
- u_name
- profile_pic
- 电子邮件
- 密码
- 性别
醇>
我没有得到正确的结果,它告诉我那些已经和我成为朋友的朋友(当前的session_user)。
答案 0 :(得分:0)
您的要求似乎是“让当时用户不是当前用户的随机用户”。如果是这样,这将是一个更直接的SQL翻译:
SELECT user.id AS id, user.name AS name, user.u_name AS u_name, user.profile_pic AS profile_pic
FROM user
WHERE user.id <> '$sess' AND user.id NOT IN (
SELECT DISTINCT add_by_id FROM user_friend WHERE add_to_id = '$sess'
UNION
SELECT DISTINCT add_to_id FROM user_friend WHERE add_by_id = '$sess'
)
ORDER BY RAND() LIMIT 1
(注意:未经测试。)
您的原始sql有一个联接,它将结果限制为已经与当前用户建立连接的用户,因此永远无法满足您的需求。 (如果我理解你的需要正确的话。)