php - 获取所有帖子并发布用户喜欢的 MySQL

标签 php mysql sql request

我正在尝试获取所有帖子和帖子旁边的变量“喜欢”,以检查用户是否喜欢它。

我有三张 table ,上面有论文:

-帖子

+----+---------+---------+
| id | user_id |   text  |
+----+---------+---------+

-投票

+----+-----------+---------+---------+
| id | type_vote | user_id | post_id |
+----+-----------+---------+---------+

-用户

+---------+---------+
| id_user | etc..   |
+---------+---------+

我检查了其他人的答案,但它没有解决我的问题。我也尝试了这段代码:

SELECT id, text,
            IF('$uid' IN (SELECT id FROM votes WHERE user_id='$uid'), 1, 0) AS liked
            FROM posts
            INNER JOIN users
            ON users.id_user = posts.user_id
            WHERE posts.user_id = '$uid' OR posts.user_id 
        ORDER BY posts.created_at desc

但它仅返回用户创建的帖子,并且 Like 变量不起作用..

我错过了什么?

提前致谢!

编辑:

我设法获取相应帖子旁边的投票 ID,如果 NULL 则将其转换为 0,如果 id 存在则将其转换为 1?

SELECT p.*,(SELECT id from votes where user_id = '$uid' AND post_id = p.id) as liked from posts p

我得到的结果如下:

    +----+------+---------+---------------+
    | id | text | user_id |liked          |
    +----+------+---------+-----+---------+
    | 1  | blab | 5476zef |NULL OR post_id|
    +----+------+---------+---------------+

最佳答案

我不确定“喜欢”和“投票”之间的关系。但是,如果您想要所有帖子和附加信息,那么就会想到左连接或相关子查询。

我想这可能就是你想要的:

select p.*
       (exists (select 1
                from votes v
                where v.post_id = p.id and v.user_id = $uid
               )
       ) as user_flag
from p;

type_vote 上也可能有一些条件,但您的问题没有解释如何使用该字段。

关于php - 获取所有帖子并发布用户喜欢的 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41119806/

相关文章:

php - 使用 Facebook PHP API 发表评论

javascript - 使用 Spatie 的 Browsershot/Headless Chrome 截取超长截图

php - 为什么一个引用可以引用多个变量?

php - 插入到特定列mysql数据库php

php - 将 Sphinx 索引数据导出到 SQL

php - 如何根据数组值编写查询

php - Wordpress 按特定表中的值排序

mysql - 编号状态的条件聚合

mysql - 限制连接以避免查询运行时间过长

mysql - 在 SQL 表中容纳航路点