首页 > 解决方案 > 如何在postgres中检索包含多个类别的所有行?

问题描述

我想我很接近这个查询,但我需要帮助才能完成它。我想做的很简单。我需要返回一个包含这两个特定类别的课程列表 - COURSE_CURRENT 和 COURSE_ENDED。一门课程应该只有这些类别之一。原因是它们显示在取决于类别的特定选项卡中。问题是有些课程两者都有,但没有显示。

如果查询检查被注释掉的课程 ID,我们得到两行。两个类别各一个,这是正确的。我需要能够为所有具有这两个类别的课程做到这一点。

样本数据

这是我的查询

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

任何帮助表示赞赏。

谢谢

标签: databasepostgresql

解决方案


这是解决方案。我需要为 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

推荐阅读