繁体   English   中英

在带有左连接的查询中使用计数

[英]Using count in in query with left join

我目前正在尝试计算用户对我网站上的图像有多少不喜欢和喜欢,在下面您将看到我为此所做的数据库设置。 Vote_type 保留喜欢和不喜欢信息,其中 1 等于喜欢,0 等于不喜欢。

此表称为项目Project 表

这个表叫做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()
";

也许是这样的?

SELECT project_id,
       sum(case when vote_type = 1 then 1 else 0 end) likeCount,
       sum(case when vote_type = 0 then 1 else 0 end) dislikeCount
FROM projects
LEFT JOIN users ON fk_usr_id = usr_id
LEFT JOIN projects_maps ON fk_project_id = project_id   
GROUP BY  project_id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM