首页 > 解决方案 > 在带有左连接的查询中使用计数

问题描述

我目前正在尝试计算用户对我网站上的图像的不喜欢和喜欢的次数,在下面您将看到我为此所做的数据库设置。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()
";

所以我很难理解的是如何计算我在特定博客上的喜欢和不喜欢,所以我可以在我的网站上显示这些信息。

标签: phpmysqlcountleft-join

解决方案


我通过将查询更改为此处的此语句解决了我的问题。

$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()
";

推荐阅读