我的数据库中有3个表:
id ------- username
1 user1
2 user2
id ------- name
4 writer4
5 writer5
8 writer8
user_id ----- follow
1 5
1 8
2 5
所以,现在User1跟在writer5和writer8之后,user2跟在writer5
之后我以user1身份登录我的应用程序,当我进入编写者页面时,我获得了数据库中所有编写者的列表。 我只想在每个作家面前展示我是否跟随这位作家。
列表作家页面示例:
writer4 :follow
writer5 :unfollow (i'm following him now)
writer8 :unfollow (i'm following him now)
writer100 :follow
我的问题是:如果我不是(作为user1)跟随此作者,是否有查询来获取完整的编写者列表并给我一个值= 0
任何想法? 谢谢..
答案 0 :(得分:7)
SELECT
writers.username,
IFNULL(following.user_id,0) AS isFollowing
FROM
writers
LEFT JOIN following ON writers.id = following.follow
然后在php中你可以查看$results['isFollowing']
是真(> = 1)还是假(0)并显示你需要的内容。
答案 1 :(得分:3)
我建议您在用户ID的密钥上对作者进行外部联接:
select w.*, f.user_id from writers w
left outer join following f on f.follow = w.id
and f.user_id = <INSERT USER ID HERE>
这应返回所有作者的列表,并显示您关注的作者的用户ID,对于您没有的作者则为null。然后,您可以将跟随/取消关注逻辑基于此。
答案 2 :(得分:3)
您需要使用CROSS JOIN
才能让用户获得所有作家。
SELECT b.name,if(c.userid is null, 'follow', 'unfollow') result
FROM users a
CROSS JOIN writers b
LEFT JOIN following c
on a.id = c.userid AND
b.id = c.follows
WHERE a.id = 1
答案 3 :(得分:0)
PL / SQL支持编程语言功能,如条件语句,迭代语句。
编程结构类似于您在Java和C ++等编程语言中的使用方式。在本节中,我将为您提供如何在PL / SQL编程中使用条件语句的语法。
IF condition
THEN
statement 1;
ELSE
statement 2;
END IF;