我需要一个 sql 查询,它给我一个教两个指定主题的老师

Posted

技术标签:

【中文标题】我需要一个 sql 查询,它给我一个教两个指定主题的老师【英文标题】:I need an sql query that gives me a teacher who teach two specified subject 【发布时间】:2020-03-12 10:13:01 【问题描述】:

我有一个包含教师和学生的数据库,我需要找出哪位教师教授科目 A 和科目 B。

select nameteacher
from teacher inner join 
     university 
     on teacher.codt = university.codt inner join 
     subject 
     on university.coddisc = subject.coddisc
where subjects=('A') AND subjects=('B');

我的版本不工作我该怎么办?

【问题讨论】:

样本数据和期望的结果会有所帮助。你怎么知道老师是否在教一门特定的科目? 请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出您可以给出的最少代码,即您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表的代码的 SQL。停止尝试编写您的总体目标并从给定的代码中解释您的期望以及原因。 这是一个常见问题解答。在考虑发布之前,请阅读手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:***.com 和标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。请参阅How to Ask 和投票箭头鼠标悬停文本。 SQL query that gives distinct results that match multiple columns的可能重复 【参考方案1】:

我怀疑你想要group byhaving

select t.teacher_name
from teacher t
inner join university u on t.codt = u.codt
inner join subject s on u.coddisc = s.coddisc
where s.subject_name in ('A', 'B')
group by t.teacher_id, t.teacher_name
having count(*) = 2

根据您的实际数据集,您可能需要更严格的 having 子句:

having count(distinct s.subject_name) = 2

【讨论】:

以上是关于我需要一个 sql 查询,它给我一个教两个指定主题的老师的主要内容,如果未能解决你的问题,请参考以下文章

优化 sql 查询以提高效率

低速SQL查询

如何实现子查询以选择与三个主题中的两个主题匹配的行?

codeigniter mysql中sql查询的空结果

为啥我的 Linqued 查询没有给我正确的结果?

分页可以只用一个 sql 查询吗? [复制]