레일즈에서 루비에서 다음과 같은 작업을하려고하지만, mysql에서 좋은 답변을 얻을 수 있다고하더라도.관련 테이블의 열 중 하나가 조건을 충족시키지 못하면 테이블에서 행을 무시할 수 있습니까?
나는 학생과 코스 테이블이 있습니다. 학생 -> 코스는 일대 다 관계입니다. 나는 하나의 SQL을 사용하여 동일한 결과를 달성하고자하는
Student Course |--------------| |--------------------------------------| |id| name | |id | course_name | grade | student_id | |---------- | |--------------------------------------| |S1| student 1 | |C1 | Course1 | A | S1 | |S2| student 2 | |C2 | Course2 | C | S1 | |---------- | |C3 | Course1 | A | S2 | |C4 | Course2 | B | S2 | |--------------------------------------|
select * from Student
where id NOT IN (select student_id from Course where grade = 'C')
문 또는 액티브를 사용하여 가입하세요.
첫 번째 SQL 문을했다. 나는 왜 당신이 어디에서 'IS NULL'을 사용했는지 이해할 수 없다. 그것에 대해 자세히 설명해 주시겠습니까? – chetu
@chetu : LEFT JOIN은 오른쪽 테이블 (Course)에 해당 행이 없더라도 왼쪽 테이블 (Student)의 모든 행이 결과에 표시되도록합니다. 오른쪽 열은 "실제"데이터가 없으면 NULL입니다. 이 쿼리에서 학생들은 우리가 원하는 학생들입니다. 학년 = 'C'로 필터링하면 코스 테이블에 표시되지 않은 학생들입니다. –
감사합니다, 코위! – chetu