mysql - 从表中查找类别数
问题描述
我正在尝试为一个研究所开发一个查询管理系统。我在 mysql 数据库中有 3 个表。
leads_course_category
表保留课程类别并具有列:category_id
、category_name
、category_created_time
、category_deleted
。leads_course_details
表在类别下存储课程并具有列:course_id
、course_category_id
、course_name
。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
此查询跳过所有具有空值的类别,但我需要将其显示为零计数。
请帮我解决这个问题。
解决方案
条件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
推荐阅读
- oracle - 如何在 SQL Developer 中检查语法 Oracle 存储过程?
- mysql - MySQL:有一个包含最小值和最大值列的表,如果我的搜索词超过最大值,我怎么能找到“最高”值?
- swift - 为什么我在 Xcode 中收到“BackgroundTask”错误?
- bash - 无法将手表与 kubectl 和 xargs 一起使用
- java - 使用 Android 的 MediaStore(ContentResolver/范围存储)创建图像文件后文件扩展名和文件名错误
- kubernetes - Openshift 重新加密 TLS 终止路由不起作用。申请不可用
- flutter - 使用 AnimatedContainer 小部件的 transorm 属性
- r - 循环导入和合并文件
- javascript - 检查JS中是否有4个字符串重复的适当方法
- javascript - 将特定颜色的每个选项卡移动到单独的工作簿