Php MYSQL查询检查用户是否喜欢
我要的是查询语句我有两个表 第一个表“posts”:Php MYSQL查询检查用户是否喜欢,php,mysql,Php,Mysql,我要的是查询语句我有两个表 第一个表“posts”: post_id title Userid 1 test 1 另一张桌子是“喜欢” userid post_id 1 1 我需要单次查询,以检查用户是否喜欢这张照片或不批量选择我的解决方案非常差: SELECT * FROM `table` WHERE x = x LIMIT 100; 并将其赋给foreach并对每一行进行查询: foreach($results as $v) {
post_id title Userid
1 test 1
另一张桌子是“喜欢”
userid post_id
1 1
我需要单次查询,以检查用户是否喜欢这张照片或不批量选择我的解决方案非常差:
SELECT * FROM `table` WHERE x = x LIMIT 100;
并将其赋给foreach并对每一行进行查询:
foreach($results as $v)
{
$data[1] = $v;
$data[1]['is_like'] = SELECT COUNT(*) FROM likes WHERE userid = 1;
}
1是已登录的用户id
我需要单次查询返回post_id,。。etc和filed like is_like假设
likes
只能有一行具有相同的(用户id、发布id):
如果不是(对于给定的(用户id、发布id),likes
中有多行):
或
更新
我希望我现在对这个问题有了更好的理解。我的假设是:posts.user\u id
是创建post的用户的idlike
表存储关于谁喜欢该帖子的信息。因此,要检查所有帖子以及是否需要类似的帖子($login\u user\u id
应该正确转义)
假设
likes
只能有一行具有相同的(用户id、发布id):
如果不是(对于给定的(用户id、发布id),likes
中有多行):
或
更新
我希望我现在对这个问题有了更好的理解。我的假设是:posts.user\u id
是创建post的用户的idlike
表存储关于谁喜欢该帖子的信息。因此,要检查所有帖子以及是否需要类似的帖子($login\u user\u id
应该正确转义)
类似的东西应该作为一个查询来使用(当然,未经测试-您没有提供太多用于测试的数据):
这将为您提供指定用户喜欢的帖子总数。类似的内容可以作为单个查询使用(当然,未测试-您没有提供太多用于测试的数据):
SELECT
p.post_id,
p.title,
IF(l.post_id IS NOT NULL,1,0) as like
FROM posts as p
LEFT JOIN likes as l ON l.post_id = p.post_id AND l.userid = p.userid
WHERE p.Userid = 1
这将为您提供指定用户喜欢的帖子总数
SELECT
p.post_id,
p.title,
IF(l.post_id IS NOT NULL,1,0) as like
FROM posts as p
LEFT JOIN likes as l ON l.post_id = p.post_id AND l.userid = p.userid
WHERE p.Userid = 1
如果likes表中的post_id可用,它将返回1或0
如果likes表中的post_id可用,它将返回1或0。请编辑您的问题,将一些示例数据添加到
likes
表中,然后将您希望从该示例数据中获得的结果与posts
中的数据相结合。没有它很难说出你在问什么。谢谢。我已经添加了它,您现在可以检查它。请编辑您的问题,将一些示例数据添加到likes
表中,然后将您希望从该示例数据中获得的结果与帖子中的数据相结合。没有它很难说出你在问什么。谢谢。我已经添加了它,你现在可以检查它嗨,首先谢谢你的回答我需要检查它为已经登录的用户我有像$login\u user\u id=1的变量;我需要检查这个用户是否喜欢looopI中的每一篇文章,希望你不理解我的问题。我的问题是:我有($login\u user\u id)这个用户已经登录了。现在我需要检查每一篇文章,这个用户是否喜欢,@user1920678:检查更新版本。希望我能理解你想要实现的目标…嗨,首先谢谢你的回答,我需要检查一下已经登录的用户,我有一个变量,比如$login\u user\u id=1;我需要检查这个用户是否喜欢looopI中的每一篇文章,希望你不理解我的问题。我的问题是:我有($login\u user\u id)这个用户已经登录了。现在我需要检查每一篇文章,这个用户是否喜欢,@user1920678:检查更新版本。希望我能理解你想要达到的目标。。。
SELECT p.* ,
CASE
WHEN EXISTS (SELECT NULL FROM likes l
WHERE l.user_id = p.user_id and l.post_id =p.post_id) THEN 1
ELSE 0
END as is_liked
FROM posts p
SELECT p.* ,
CASE
WHEN EXISTS (SELECT NULL FROM likes l
WHERE l.user_id = $login_user_id and l.post_id =p.post_id) THEN 1
ELSE 0
END as is_liked
FROM posts p
select
p.title, count(l.post_id)
from
`posts` p
inner join
`likes` l
on
l.userid = p.userid and l.post_id = p.post_id
where
p.userid = loggedinuserID
group by
p.userid
SELECT
p.post_id,
p.title,
IF(l.post_id IS NOT NULL,1,0) as like
FROM posts as p
LEFT JOIN likes as l ON l.post_id = p.post_id AND l.userid = p.userid
WHERE p.Userid = 1