Php MYSQL计数查询问题
我有3张表,下面我将简化这些表来说明我的问题 1) 模块表Php MYSQL计数查询问题,php,mysql,sql,Php,Mysql,Sql,我有3张表,下面我将简化这些表来说明我的问题 1) 模块表 | moduleId | moduleName | courseId | 2) 视频表 | videoId | videoName | duration | moduleId | 2) 注释表 | noteId | userId | videoId | 我编写了一个查询以获取以下信息: 对于notes表中的每个备注,获取其所属的moduleName和videoName SELECT module.moduleName, vi
| moduleId | moduleName | courseId |
2) 视频表
| videoId | videoName | duration | moduleId |
2) 注释表
| noteId | userId | videoId |
我编写了一个查询以获取以下信息:
对于notes表中的每个备注,获取其所属的moduleName和videoName
SELECT module.moduleName, videos.videoName
FROM videos,module,notes
WHERE notes.userId = '$userId'
AND notes.videoId = videos.videoId
GROUP BY videos.videoId
但我的问题是,我想计算每个视频,有多少笔记属于它(在notes.videoId字段中有给定的videos.videoId)
非常感谢您的帮助。
提前感谢。试试这个:
SELECT m.moduleName, v.videoName
FROM notes as n
LEFT JOIN videos as v on v.videoId=n.videoId
LEFT JOIN module as m on m.moduleId=v.moduleId
WHERE n.userId = '$userId'
GROUP BY v.videoId
您可以使用join来获取每个视频中有多少个注释属于它,只需使用公共videoId连接注释表并使用videoId进行分组即可
SELECT v.*,m.moduleName,
COUNT(n.videoId )
FROM videos v
LEFT JOIN notes n USING(videoId)
LEFT JOIN modules m ON(v.moduleId =m.moduleId )
GROUP BY v.videoId
查看文档: