首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用module=5获得课程

如何使用module=5获得课程
EN

Stack Overflow用户
提问于 2016-06-17 14:49:52
回答 3查看 152关注 0票数 2

我试图得到所有的课程,其中只有"module=5",任何不同的课程。如你所见,我有4门课程,如2,3,4,5,但只有两门课程只有"module=5",例如课程2,5。

代码语言:javascript
复制
+----+--------+--------+
| id | course | module |
+----+--------+--------+
|  1 |      2 |      5 |
|  2 |      3 |      5 |
|  3 |      3 |     11 |
|  4 |      4 |      5 |
|  5 |      4 |      3 |
|  6 |      5 |      5 |
|  7 |      4 |      6 |
|  8 |      4 |      5 |
+----+--------+--------+

我尝试了两次查询,第一次返回所有有module=5的课程,第二次返回所有有模块!=5的课程,然后保存2个文件并执行unix命令diff来查看两个文件之间的差异。

  1. 将具有module=5的所有课程保存在文件中: 从mdl_course中选择不同的全名,左加入mdl_course_modules ON mdl_course.id=mdl_course_modules.course mdl_course_modules.module=5 ON outfile‘/tmp/mdl_course_modules.module=5’;
  2. 将所有有模块的课程保存在文件中!=5: 从mdl_course中选择不同的全名,左加入mdl_course_modules ON mdl_course.id=mdl_course_modules.course,其中mdl_course_modules.module!=5进入outfile‘/tmp/plus_mdl_course.id=mdl_course_modules.course’;
  3. 然后,执行差异: $ diff论坛plus_forum

但我想返回所有的课程,其中只有module=5在一个查询。有可能吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-17 14:59:29

为了让它变得简单,让我们只需要解决mdl_course_modules

代码语言:javascript
复制
  SELECT course
  FROM mdl_course_modules
  GROUP BY course
  HAVING SUM(module <> 5) = 0
     AND SUM(module =  5) = 1  -- or >= 1
票数 2
EN

Stack Overflow用户

发布于 2016-06-17 14:58:12

这样做的一种方法是使用带关联子查询的现有谓词。

代码语言:javascript
复制
select * 
from mdl_course_modules t
where not exists (
  select 1 
  from mdl_course_modules 
  where t.course = course -- reference the outer table
  and module <> 5 -- and find rows that have any other module than 5
)  

示例SQL Fiddle

由于还不完全清楚哪些数据在哪个表中,因此您必须调整表名和列名以适应您的设置,但概念应该是明确的。

票数 0
EN

Stack Overflow用户

发布于 2016-06-17 15:03:15

您可以使用not in子查询来执行以下操作:

代码语言:javascript
复制
SELECT DISTINCT fullname 
FROM            mdl_course 
LEFT JOIN       mdl_course_modules 
ON              mdl_course.id=mdl_course_modules.course 
WHERE           mdl_course_modules.module=5
AND course.id not in (SELECT course
                      FROM   mdl_course_modules 
                      WHERE  module <> 5)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37884574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档