Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从SQL中的表中获取筛选列_Sql_Relational Division - Fatal编程技术网

从SQL中的表中获取筛选列

从SQL中的表中获取筛选列,sql,relational-division,Sql,Relational Division,我有一个表格1,有两列(教授和他们教授的科目)和其他表格2。现在我想找出所有能教授表2中所有科目的教授。我尝试通过操作加入和分组,并获得成功。但我从我的朋友那里听说,使用除法算子可以更有效地解决这个问题。过去两天我一直在努力,运气不好。有人能以任何其他方式或任何线索帮助我吗 例如: 表1 表2 S1 S3 期望输出: C,B 你能分享一下桌子的结构,让我们更清楚地了解大局吗 你可能会发现这很有帮助:Join的例子 表1(主体,主体标签) 表2(教师ID、教师姓名、主体) 这将列出拥有所有条目

我有一个表格1,有两列(教授和他们教授的科目)和其他表格2。现在我想找出所有能教授表2中所有科目的教授。我尝试通过操作加入和分组,并获得成功。但我从我的朋友那里听说,使用除法算子可以更有效地解决这个问题。过去两天我一直在努力,运气不好。有人能以任何其他方式或任何线索帮助我吗

例如: 表1

表2

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,'')