我有这个 MySQL 表:
假设我以用户 1 的身份登录,并且正在浏览用户 2 的个人资料。因为我们是共同的朋友(1 是 2 的朋友,2 是 1 的朋友),所以我需要回显“朋友”。
当我浏览用户 4 的个人资料时,我已经请求了他的好友,但他们还没有接受,我需要回显“好友请求”。
浏览任何其他用户时,我需要回显“添加朋友”。
我可以做 PHP 部分,我只是不知道如何做 MySQL 查询。
我有这个 MySQL 表:
假设我以用户 1 的身份登录,并且正在浏览用户 2 的个人资料。因为我们是共同的朋友(1 是 2 的朋友,2 是 1 的朋友),所以我需要回显“朋友”。
当我浏览用户 4 的个人资料时,我已经请求了他的好友,但他们还没有接受,我需要回显“好友请求”。
浏览任何其他用户时,我需要回显“添加朋友”。
我可以做 PHP 部分,我只是不知道如何做 MySQL 查询。
SELECT COUNT(*) as `count`, `user`
FROM `friends`
WHERE
(`user` = 1 AND `friend` = 16) OR
(`user` = 16 AND `friend` = 1)
count
什么时候
user
是你——你要求那个人的友谊user
是那个人 - 那个人要求你建立友谊你期待这样的事情吗?(仅用于 sql 部分,而不是 PHP :))
SELECT DISTINCT a. user,
CASE
WHEN a.user = b.friend
AND a.friend = b.user THEN b.friend
ELSE ''
end friends,
CASE
WHEN a.user = b.friend
AND a.friend <> b.user THEN a.friend
ELSE ''
end friendreq,
CASE
WHEN a.user <> b.friend
AND a.friend <> b.user THEN a.friend
ELSE ''
end addfriend
FROM demo a
LEFT JOIN demo b
ON a.id > b.id;
| 用户 | 朋友 | 好友请求 | 添加好友 | ------------------------------------------ | 1 | | | | | 2 | 2 | | | | 1 | | | 16 | | 1 | | 16 | | | 16 | | | | | 16 | | | 1 | | 16 | 16 | | | | 1 | | | 4 | | 1 | | 4 | |
select (case
when subquery.a > 0 and subquery.b > 0 then 'friends'
when subquery.a > 0 then 'friend requested'
else 'add friend' end) as "friend_string"
from (
select
(select count(*) from relationships where user = '$my_user_id' and friend = '$opponent_user_id') as a,
(select count(*) from relationships where user = '$opponent_user_id' and friend = '$my_user_id') as b
) subquery
请relationships
用您的表名替换,并用您的 $ 变量替换。