database - 如何在postgres中检索包含多个类别的所有行?
问题描述
我想我很接近这个查询,但我需要帮助才能完成它。我想做的很简单。我需要返回一个包含这两个特定类别的课程列表 - COURSE_CURRENT 和 COURSE_ENDED。一门课程应该只有这些类别之一。原因是它们显示在取决于类别的特定选项卡中。问题是有些课程两者都有,但没有显示。
如果查询检查被注释掉的课程 ID,我们得到两行。两个类别各一个,这是正确的。我需要能够为所有具有这两个类别的课程做到这一点。
样本数据
- "TheGreatestCourse_4012" "TheGreatestCourse_4012" "COURSE_ENDED"
- "TheGreatestCourse_4012" "The GreatestCourse_4012" "COURSE_CURRENT"
这是我的查询
select cm.course_id, cm.course_name, gc.batch_uid
from course_main cm
inner join gateway_course_categories gcc on gcc.crsmain_pk1 = cm.pk1
inner join gateway_categories gc on gc.pk1 = gcc.gatewaycat_pk1
--where cm.course_id = 'TheGreatestCourse_4012'
where (gc.batch_uid = 'COURSE_CURRENT' or gc.batch_uid = 'COURSE_ENDED')
group by cm.course_id,cm.course_name,gc.batch_uid
HAVING COUNT(gc.batch_uid) > 1
order by course_id
任何帮助表示赞赏。
谢谢
解决方案
这是解决方案。我需要为 batch_uid 添加一个计数。
select COUNT(gc.batch_uid) as countBatch, cm.course_id, cm.course_name
from course_main cm
inner join gateway_course_categories gcc on gcc.crsmain_pk1 = cm.pk1
inner join gateway_categories gc on gc.pk1 = gcc.gatewaycat_pk1
where (gc.batch_uid = 'COURSE_CURRENT' or gc.batch_uid = 'COURSE_ENDED')
group by cm.course_id,cm.course_name
HAVING COUNT(gc.batch_uid) > 1
order by course_id
推荐阅读
- html - 即使在 Bootstrap Grid Columns 丢失的情况下也可以向右拉
- python - 从被测方法中导入的模块中修补方法
- bytecode - 为什么字节码序列号不连续
- c - C 接受关于传递关系的输入
- javascript - 解析etherscan
- java - 如何在没有触摸 xml 的情况下在休眠中处理延迟初始化异常
- jquery - 更改月份时,防止 Fullcalendar 为同一元素添加新的单击事件处理程序
- angular - 如何在 Typescript(Angular Material)中实现回调函数?
- java - 如何为 ScheduledThreadPoolExecutor 类设置 maxPool 大小和 keepAliveTime?
- python - importError python while import 存在并且Pycharm识别它