从SQL中的表中获取筛选列
我有一个表格1,有两列(教授和他们教授的科目)和其他表格2。现在我想找出所有能教授表2中所有科目的教授。我尝试通过操作加入和分组,并获得成功。但我从我的朋友那里听说,使用除法算子可以更有效地解决这个问题。过去两天我一直在努力,运气不好。有人能以任何其他方式或任何线索帮助我吗 例如: 表1 表2从SQL中的表中获取筛选列,sql,relational-division,Sql,Relational Division,我有一个表格1,有两列(教授和他们教授的科目)和其他表格2。现在我想找出所有能教授表2中所有科目的教授。我尝试通过操作加入和分组,并获得成功。但我从我的朋友那里听说,使用除法算子可以更有效地解决这个问题。过去两天我一直在努力,运气不好。有人能以任何其他方式或任何线索帮助我吗 例如: 表1 表2 S1 S3 期望输出: C,B 你能分享一下桌子的结构,让我们更清楚地了解大局吗 你可能会发现这很有帮助:Join的例子 表1(主体,主体标签) 表2(教师ID、教师姓名、主体) 这将列出拥有所有条目
S1
S3
期望输出:
C,B
你能分享一下桌子的结构,让我们更清楚地了解大局吗 你可能会发现这很有帮助:Join的例子 表1(主体,主体标签) 表2(教师ID、教师姓名、主体) 这将列出拥有所有条目的所有教授。如果需要在同一行上显示结果,请将这些值连接在一起
DECLARE @Result VARCHAR(MAX) = ''
SELECT @Result = @Result + ',' + Prof
FROM Table1
INNER JOIN Table2
ON [Table1].[Subject] = [Table2].[Subject]
GROUP BY [Table1].Prof
HAVING COUNT(*) = (SELECT COUNT(*) FROM Table2)
SELECT STUFF(@Result,1,1,'')
请提供示例数据和所需结果SQL中没有除法运算符。如果您浏览我添加的relational division标记,您会发现用SQL表达这一点的方法。改用显式的
JOIN
语法。逗号不应出现在FROM
子句中。此外,这并没有回答OP的问题,充其量只是一个澄清的评论。
SELECT TeacherName, SubjectLabel FROM Table1, Table2 WHERE Table1.SubjectId = Table2.SubjectId
SELECT
Prof
FROM Table1
INNER JOIN Table2
ON [Table1].[Subject] = [Table2].[Subject]
GROUP BY [Table1].Prof
HAVING COUNT(*) (SELECT COUNT(*) FROM Table2)
DECLARE @Result VARCHAR(MAX) = ''
SELECT @Result = @Result + ',' + Prof
FROM Table1
INNER JOIN Table2
ON [Table1].[Subject] = [Table2].[Subject]
GROUP BY [Table1].Prof
HAVING COUNT(*) = (SELECT COUNT(*) FROM Table2)
SELECT STUFF(@Result,1,1,'')