Mysql连接表并统计行数

标签 mysql sql database

我有两个表:评论和照片

每条评论都通过照片 ID“连接”到特定照片。我想获取某个作者 (author_id) 的所有照片,以及对特定照片的所有评论的计数。我很抱歉我的英语不好,但我认为这是我能描述它的最好方式。

我想要一张 table :

  • id(照片表)
  • 评分(照片表)
  • created_at(照片表)
  • number_of_comments(评论表)

到目前为止我尝试过的(有语法错误):

"SELECT p.id, p.rating, p.created_at, x.*
FROM photos p 
LEFT JOIN 
(
    SELECT photo_id, COUNT(*) as cc
    FROM comments
    GROUP BY photo_id
) x 
ON x.photo_id= p.id"

错误:“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 '"SELECT p.id, p.rating, p.created_at, x.* 附近使用的正确语法FROM photos p LEFT JOIN ( SELECT' at line 1"

照片表

  • 编号
  • 作者编号
  • 文件名
  • 标题
  • 评分
  • 旗帜
  • 活跃

评论表

  • 编号
  • 评论
  • 作者编号
  • 照片编号
  • 创建于
  • 旗帜
  • 活跃

最佳答案

这样它会工作得更快,需要的资源更少,而且更容易阅读:)

SELECT p.id, p.rating, p.created_at, count(c.id) AS cnt
FROM photos p 
    LEFT JOIN comments c ON c.photo_id=p.id
GROUP BY p.id

关于Mysql连接表并统计行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23573598/

相关文章:

php - 通过mysql表中的变量插入

sql - 强制多个列之间的相互唯一性

java - JDBC INSERT INTO - 错误的主键

python - 在 Windows 上设置 Python 环境

mysql - 对数据进行分组的 SQL 查询

mysql - SQL 计数等于 1 个值的记录,并对其余的进行计数和分组

mysql - 使用mysql连接来统计客户的发票数量

mysql - 如何选择表名为 : "group"? 的表

sql - 判断表中的条目是否在增加

database - Symfony2/Doctrine 和 PostgreSQL NOTIFY/LISTEN