php - 为每个帖子选择反对票和赞成票 php mysql

标签 php mysql sql select count

我有一个论坛,用户可以在其中发布问题并可以投赞成票和投反对票。

我想获得每个帖子的 upvotedownvote

我之前所做的是在 3 组查询中执行此操作。

$data = mysqli_query($con,"select * from posts");
while($row = mysqli_fetch_assoc($data)){
  $pid  = $row['post_id'];
  $up = mysqli_fetch_assoc(mysqli_query("SELECT COUNT(*) as c FROM up WHERE post_id = $pid"))['c'];
  $down = mysqli_fetch_assoc(mysqli_query("SELECT COUNT(*) as c FROM down WHERE post_id = $pid"))['c'];
}

谁能告诉我如何在一个查询中做这些事情,因为如果在第一个查询中得到很多帖子,那么会有很多查询做。

最佳答案

您可以使用子查询并将所有内容放在第一个查询中。

这可能是一个好的开始:

$data = mysqli_query($con, "select posts.*, " . 
                           "(SELECT COUNT(*) FROM up WHERE post_id = posts.post_id) as totalUp, " . 
                           "(SELECT COUNT(*) FROM down WHERE post_id = posts.post_id) as totalDown " .
                           "from posts");
while($row = mysqli_fetch_assoc($data)){
  // ...
}

关于php - 为每个帖子选择反对票和赞成票 php mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27805236/

相关文章:

mysql 调整时间戳性能?

asp.net - SQL 多用户类型数据库

c# - 文件上传时覆盖

mysql - 根据 SQL 中的另一列获取记录的 COUNT/SUM

javascript - 从源 'https://js.stripe.com/v2/' 访问位于 'http://localhost' 的 XMLHttpRequest 已被 CORS 策略 : in opencart 阻止

php - Jquery ajax POST 响应为空

MySQL 错误 : Can't get hostname from your ip address

sql - 获取多对多关系的有效方法

php - 将 curl 响应保存到 php 变量中

php - 当另一个表中不存在某些内容时执行此查询