이것은 아마도 매우 기본적인 것일뿐입니다.테이블 자체에 테이블 조인 SQL
나는 두 개의 테이블을 가지고 있는데 하나는 학생들이 어떤 수업을하고 있는지를 보여주고 다른 하나는 각 학생이받은 성적을 보여줍니다. 나는 어떤 과목에서 어떤 학생들이 성적이 없는지 알아 보려고한다.
내가 성적을해야합니까 클래스에서 학생들의 목록을 발견 시작점으로이 코드를 작성을 : 치료를 작동SELECT mem.student_id, mem.class_id
FROM class_memberships as mem
inner join grades as gr
on mem.student_id = gr.student_id
where mem.class_id = 12 and gr.grade_type = 18
,하지만 실제로 필요로하는 것은에서 학생입니다 계급이없는 계급, 그렇지 않은 계급. 나는 다음과 같이 내가 바로 회원 테이블에 대해 조인 수 있다고 생각하지만, 그것은 작동하지 않았다
SELECT mem.student_id, mem.class_id
FROM class_memberships as mem
inner join grades as gr
on mem.student_id = gr.student_id
right join class_memberships as mem2
on mem.student_id = mem2.student_id
where mem.class_id = 12 and gr.grade_type = 18
and mem.student_id is null
은 위의 모든 행을 반환하지 않습니다와 나는 한 학생은 등급이없는 것을 알고있다. 위의 예제를 얻기 위해 SQL 오른쪽 조인에 대한 예제를 따라했습니다. 나는 'mem.student_id가 null'조항으로 인해 작동하지 않는 것 같지만 Google의 모든 cheatsheets은 내가 필요하다고 말했다.
도와주세요. 나는 SQL에 대한 초보자 (그리고 일반적으로 코딩하기 때문에) 이것은 아마도 매우 기본적인 것이지만 어디에서나 대답을 찾을 수는 없다. 고마워요 :)
SQL Server 인 경우 Google의 'SQL Server NOT EXISTS'입니다. 또한이 질문에 대한 RDBMS 태그. – dfundako
참고로, 아무도'RIGHT JOIN'을 사용하지 않습니다. 'LEFT JOIN' 예, 그렇지만 보통'RIGHT JOIN'을 사용하려고하면 LEFT JOIN이됩니다. 가장 작은 테이블부터 시작하여 필요한 것을 찾으십시오. – SQLMason