我有这个MySQL表:
让我们想象一下,我以用户1的身份登录,我正在浏览用户2的个人资料。由于我们是共同的朋友(1是2和2的朋友,1是朋友),我需要回应“朋友”。
当我浏览用户4的个人资料时,我已经请求了他们的友情,但他们还没有接受,我需要回应“请求的朋友”。
在浏览任何其他用户时,我需要回应“添加朋友”。
我可以做PHP部分,我只是不知道如何进行MySQL查询。
答案 0 :(得分:2)
SELECT COUNT(*) as `count`, `user`
FROM `friends`
WHERE
(`user` = 1 AND `friend` = 16) OR
(`user` = 16 AND `friend` = 1)
当count
user
是你 - 你要求那个人的友谊user
就是那个人 - 那个人要求你的友谊答案 1 :(得分:0)
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
替换为您的表名,将$ variables替换为您的。
答案 2 :(得分:0)
你期待这样的事吗? (仅适用于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;
| USER | FRIENDS | FRIENDREQ | ADDFRIEND | ------------------------------------------ | 1 | | | | | 2 | 2 | | | | 1 | | | 16 | | 1 | | 16 | | | 16 | | | | | 16 | | | 1 | | 16 | 16 | | | | 1 | | | 4 | | 1 | | 4 | |