我有两个表:评论和照片
每条评论都通过照片 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/