2017-02-13 1 views
-2

두 개의 열 (교수 및 강의 대상)이있는 tabl1과 다른 table2가 있습니다. 이제 나는 table2의 모든 과목을 가르 칠 수있는 모든 교수를 찾으려고 노력하고 있습니다. 나는 조인 및 그룹 작업을 시도하고 성공적으로 그것을 얻었다. 그러나 친구들로부터 우리는 나누기 연산자를 사용하여이 문제를 더욱 효율적으로 해결할 수 있다고 들었습니다. 나는 지난 이틀 동안 노력하고있다. 운이 없다. 어떤 방법으로 다른 사람에게 도움을 줄 수 있습니까?SQL의 테이블에서 필터링 된 열 가져 오기

예 : 표

Prof Subject 
A  S1 
A  S4 
B  S1 
B  S3 
C  S1 
C  S2 
C  S3 

표 2

S1 
S3 

원하는 출력 :

C,B 
+1

예제 데이터와 원하는 결과를 제공하십시오. – GurV

+1

SQL에 나누기 연산자가 없습니다. 추가 한 관계형 구분 태그를 탐색하면 SQL에서이를 표현할 수있는 방법을 찾을 수 있습니다. –

답변

-1

당신은 그래서 우리는 더 명확하게 큰 그림을 테이블 구조를 공유 할 수 있습니까?

당신은 어쩌면이 도움이 찾을 수 있습니다

: 가입의 예를

표 (SubjectId, SubjectLabel는)

표 2 (TeacherId, TEACHERNAME, SubjectId)

SELECT TeacherName, SubjectLabel FROM Table1, Table2 WHERE Table1.SubjectId = Table2.SubjectId 
+1

이 스타일의 JOIN은 [** over 25 years **] (http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt)에서 더 이상 사용되지 않습니다. 대신 명시 적'JOIN' 구문을 사용하십시오. 쉼표는 절대로 FROM 절에 있어서는 안됩니다. 또한, 이것은 OP의 질문에 답하지 않고 기껏해야 설명을위한 주석입니다. – Siyual

0
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,'') 
관련 문제