Php 在具有左联接的查询中使用计数

Php 在具有左联接的查询中使用计数,php,mysql,count,left-join,Php,Mysql,Count,Left Join,我目前正试图计算有多少不喜欢和喜欢的用户给了我的网站上的图像,下面你会看到我的数据库设置正是为了这个。投票类型保留“喜欢”和“不喜欢”信息,其中1等于“喜欢”,0等于“不喜欢” 此表称为项目 此表称为项目投票 现在,我想在查询从数据库中拖动信息以获取博客文章时包括这一点。这是我目前正在进行的查询,以获取在frontpage上显示博客列表所需的信息。在这里,我得到了上传程序,链接的项目ID等等 $query = " SELECT * FROM projects LEFT JOIN

我目前正试图计算有多少不喜欢和喜欢的用户给了我的网站上的图像,下面你会看到我的数据库设置正是为了这个。投票类型保留“喜欢”和“不喜欢”信息,其中1等于“喜欢”,0等于“不喜欢”

此表称为项目

此表称为项目投票

现在,我想在查询从数据库中拖动信息以获取博客文章时包括这一点。这是我目前正在进行的查询,以获取在frontpage上显示博客列表所需的信息。在这里,我得到了上传程序,链接的项目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()
";

所以我很难理解的是如何在一个特定的博客上计算我的好恶,这样我就可以在我的网站上显示这些信息。

也许是这样的

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

也许是这样的

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

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

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

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

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

构建一个查询,显示
fk\u项目id
中每个项目值的
vote\u type
列的
SUM
“如何计算我在特定博客上的好恶”输入和输出究竟是什么?你能做什么?PS请在代码问题中给出一个--cut&paste&runnable代码;示例输入(作为初始化代码)以及所需和实际输出(包括逐字错误消息);标签和版本;清晰的说明和解释。对于包含最少代码的错误,您可以给出“显示为OK”的代码,并通过“显示为not OK”的代码进行扩展。(调试基础。)用于包含DBMS和DDL的SQL,其中包括约束、索引和表格初始化。@philipxy Hi Philip。我已经添加了两个相互交互的表。我刚刚给了一个链接&我在评论中为你总结了一下&很明显你的帖子中仍然没有一个。PS谢谢。从其他文本中转述或引用。给出你所需要的&把它和你的问题联系起来。仅将图像用于不能表示为文本或扩充文本的内容。无法搜索或剪切粘贴图像。包括带有图像的图例/图例和说明。在你的帖子中包含所有需要提问的内容。PS Show a try at COUNT()。构建一个查询,显示
fk_项目id中每个项目值的
vote_type
列的
SUM
“如何计算我在特定博客上的喜好”输入和输出究竟是什么?你能做什么?PS请在代码问题中给出一个--cut&paste&runnable代码;示例输入(作为初始化代码)以及所需和实际输出(包括逐字错误消息);标签和版本;清晰的说明和解释。对于包含最少代码的错误,您可以给出“显示为OK”的代码,并通过“显示为not OK”的代码进行扩展。(调试基础。)用于包含DBMS和DDL的SQL,其中包括约束、索引和表格初始化。@philipxy Hi Philip。我已经添加了两个相互交互的表。我刚刚给了一个链接&我在评论中为你总结了一下&很明显你的帖子中仍然没有一个。PS谢谢。从其他文本中转述或引用。给出你所需要的&把它和你的问题联系起来。仅将图像用于不能表示为文本或扩充文本的内容。无法搜索或剪切粘贴图像。包括带有图像的图例/图例和说明。在你的帖子中包含所有需要提问的内容。PS Show a try at COUNT()。请注意,在MySQL中,当1 else 0 end
我想我忘了包括我共享的表名为projects时,可以省略
case。\u votes我解决了我的问题,我刚刚发布了我的解决方案。也许你可以检查一下,看看你是否认为这是一个好的解决方案?请注意,在MySQL中,当1 else 0 end
我想我忘了包括我共享的表名为projects\u votes。我解决了我的问题,我刚刚发布了我的解决方案。也许你可以看看,看看你是否认为这是一个好的解决方案?