【问题标题】:How to get both like and dislike count of the post in single query using cake php or php如何使用 cake php 或 php 在单个查询中同时获得喜欢和不喜欢的帖子计数
【发布时间】:2017-04-03 09:16:24
【问题描述】:

我研究了一天,但我没有得到解决方案。如果有可能使用单个 CakePHP 查询获得他喜欢和不喜欢的所有帖子的计数 表结构

id user_id  posts_id  like_and_dislike
1    1         1          1
2    2         1          1
3    4         1          0
4    5         2          1

在这里,我们需要获取所有帖子的喜欢和不喜欢计数 发布 1 喜欢 -> 2 和不喜欢 -> 1 而对于帖子 - 2 喜欢 -> 1 和不喜欢 -> 0 需要列出计数。如果不可能,请对此查询提供任何帮助,请在 php 查询中提供帮助

【问题讨论】:

  • 有了那个表数据,预期的结果是什么? (以及格式化文本。)同时向我们展示您当前的查询尝试。
  • 我需要一个输出为 {[{"posts_id":1,"likes":"2","dislike":"1"},{"posts_id":2,"likes": "1","不喜欢":"null"}]}
  • 我尝试了 sql query particuler post 14 但我需要列出所有帖子 SELECT * , (SELECT COUNT( * ) FROM users_like_posts WHERE posts_id = 14 AND like_or_dislike = '0' GROUP BY realtime_id ) 作为不喜欢, (SELECT COUNT( * ) FROM users_like_posts WHERE realtime_id = 14 AND like_or_dislike = '1' GROUP BY realtime_id) as postlike FROM users_like_posts INNER JOIN posts ON users_like_posts.posts_id = posts.id WHERE posts_id = 14 GROUP BY posts_id

标签: php mysql sql cakephp cakephp-3.0


【解决方案1】:

我猜你需要这个

SELECT post_id, 
COUNT( CASE WHEN like_and_dislike = 1 THEN 1 END ) AS like_cnt, 
COUNT( CASE WHEN like_and_dislike = 0 THEN 1 END ) AS dislike_cnt 
FROM your_table
GROUP BY post_id
-- ORDER BY something
-- LIMIT x, y

【讨论】:

  • 顺便说一句,文档中有一个几乎完全一样的例子:book.cakephp.org/3.0/en/orm/query-builder.html#case-statements
  • @ndm - 我从来没有看过 cakephph 文档,虽然有类似的例子对我来说并不奇怪,因为这种 SQL 方法在这种情况下很常见
  • @OtoShavadze 再次说明如何使用 LIMIT 进行此查询
  • @RaghulRajendran - 你需要限制什么,请说清楚
  • @OtoShavadze 查询返回值数组没有问题。我需要自定义限制数组,例如 SELECT * FROM Orders LIMIT 30 以实现分页结果
【解决方案2】:

你有两个选择

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多