MYSQL COUNT查询问题


MYSQL COUNT query trouble

我有3个表,下面我将对它们进行简化,以说明我的问题。

1) 模块表

| moduleId | moduleName | courseId |

2) 视频表

 | videoId | videoName | duration | moduleId |

2) 票据表

 | noteId | userId | videoId | 

我写了一个查询来获得以下信息:

对于notes表中的每个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)

如果有任何帮助,我将不胜感激。提前谢谢。

您可以使用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 

试试这个:

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