php - 在带有左连接的查询中使用计数
问题描述
我目前正在尝试计算用户对我网站上的图像的不喜欢和喜欢的次数,在下面您将看到我为此所做的数据库设置。Vote_type 保留喜欢和不喜欢的信息,其中 1 等于喜欢,0 等于不喜欢。
此表称为项目 项目表
此表称为 projects_votes
现在,当我进行查询以从数据库中拖动信息以获取博客文章时,我想将其包括在内。这是当前我为获取必要信息以在首页上显示博客列表而进行的查询。在这里,我得到了上传者、链接的项目 ID 等等。
$query = "
SELECT * FROM projects
LEFT JOIN users
ON fk_usr_id = usr_id
LEFT JOIN projects_maps
ON fk_project_id = project_id
ORDER BY RAND()
";
所以我很难理解的是如何计算我在特定博客上的喜欢和不喜欢,所以我可以在我的网站上显示这些信息。
解决方案
我通过将查询更改为此处的此语句解决了我的问题。
$query = "
SELECT project_id, usr_publicname, project_name, photofile_name, map_version, usr_publicname, map_date, project_id AS project, (SELECT COUNT(*) FROM projects_votes WHERE vote_type = 1) AS likes,
(SELECT COUNT(*) FROM projects_votes WHERE vote_type = 0) AS dislikes FROM projects
LEFT JOIN projects_votes ON fk_project_id = project_id
LEFT JOIN users ON projects.fk_usr_id = usr_id
LEFT JOIN projects_maps ON projects_maps.fk_project_id = projects.project_id
LEFT JOIN photos ON photos.fk_project_id = projects.project_id
GROUP BY project_id ORDER BY RAND()
";
推荐阅读
- sql-server-2017 - 将查询作为参数传递?
- javascript - 创建多个数组列表
- tsql - CASE WHEN SomeCol IS NULL THEN 0 ELSE 1 END 在实体框架中是否有等价物
- php - 如果导航链接超过 10 则显示汉堡菜单
- asp.net - Azure 网站部署但显示 500 错误
- r - 去除时间序列中不持续特定时间范围的噪声
- tensorflow - 如何从 CSV 文件创建联合数据集?
- java - 除某些项目外,按字母顺序对 java 列表进行排序
- ios - 我应该在 app.json 文件中更改哪些内容以从 expo 重建我的应用程序?
- powershell - 确定进程何时打开窗口的简单方法,而不仅仅是使用 powershell 运行?