【问题标题】:get ALL posts AND post the user liked MySQL获取所有帖子并发布用户喜欢 MySQL
【发布时间】:2016-12-13 11:19:20
【问题描述】:

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

我有三张桌子和论文:

-帖子

+----+---------+---------+
| 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

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

我错过了什么?

提前致谢!

编辑:

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

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|
    +----+------+---------+---------------+

【问题讨论】:

  • 您使用的是哪个 dbms? (那里有一些非 ANSI SQL...)
  • 嗨,我正在使用 mysql
  • 添加一些示例表数据,以及预期的结果。 (以及格式化文本。)
  • 我编辑我的问题!

标签: php mysql sql request


【解决方案1】:

我不确定“喜欢”和“投票”之间的关系。但是,如果您想要所有帖子和其他信息,那么您可以想到 left join 或相关子查询。

我想这可能是你想要的:

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 上也可能有一些条件,但您的问题并未说明该字段是如何使用的。

【讨论】:

  • 您好,感谢您的回答。是的,我忘记了,但是我的投票表股票喜欢和不喜欢,所以是的,我也需要条件,但如果我得到了东西,我会自己做。感谢您的代码,我想我知道如何构建我的请求,但有一件事,我无法在我的 json 响应中获取值 user_flag 的值始终为“0”
  • @Efbi 。 . .这表明给定用户总是(以某种方式)在每个帖子上投票。
  • 是的,我尝试投票,在数据库中没关系,当我执行 sql 查询时也没关系,但是 json 响应没有显示值!我编辑了我的帖子
【解决方案2】:

选择 products.title,isfav.isFavourite 从 产品 左加入 isfav ON products.product_id = isfav.product_id 和 isfav.user_id=2 订购方式 products. added_date

【讨论】:

    【解决方案3】:

    你也可以使用 if 条件:

    IF(liked IS NULL,0,1)
    

    您可以添加一列或将喜欢的内容替换为您的表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      • 2019-03-31
      • 2017-10-07
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多