首页 > 解决方案 > 从表中查找类别数

问题描述

我正在尝试为一个研究所开发一个查询管理系统。我在 mysql 数据库中有 3 个表。

  1. leads_course_category表保留课程类别并具有列:category_idcategory_namecategory_created_timecategory_deleted

  2. leads_course_details表在类别下存储课程并具有列:course_idcourse_category_idcourse_name

  3. leads_enquiry_details表存储查询详细信息并具有以下列:enquiry_id, enquiry_name, leads_course_details_course_id,enquiry_deleted

我需要找到每个类别的查询数量。我尝试了以下查询:

SELECT category_name,COUNT(*) as COUNT
FROM leads_course_category
RIGHT JOIN   leads_course_details 
on category_id=leads_course_details.course_category_id  
RIGHT JOIN `leads_enquiry_details`   
on leads_course_details.course_id= leads_enquiry_details.leads_course_details_course_id  
WHERE leads_enquiry_details.enquiry_deleted=1 
GROUP BY leads_course_category.category_id

此查询跳过所有具有空值的类别,但我需要将其显示为零计数。

请帮我解决这个问题。

标签: mysqlgroup-bycountright-join

解决方案


条件enquiry_deleted = 1必须移至ON子句:

select c.category_name, count(ed.enquiry_id) count 
from leads_course_category c 
left join leads_course_details cd on c.category_id = cd.course_category_id  
left join leads_enquiry_details ed on cd.course_id = ed.leads_course_details_course_id and ed.enquiry_deleted = 1 
group by c.category_id, c.category_name

推荐阅读