선생님이 John이라는 이름으로 모든 학생 이름을 어떻게 얻을 수 있습니까?MySQL - John이라는 이름의 선생님이 가르친 모든 학생의 이름을 어떻게 얻을 수 있습니까?
학생
id
name
student_has_teacher
teacher_id
student_id
교사
id
name
선생님이 John이라는 이름으로 모든 학생 이름을 어떻게 얻을 수 있습니까?MySQL - John이라는 이름의 선생님이 가르친 모든 학생의 이름을 어떻게 얻을 수 있습니까?
학생
id
name
student_has_teacher
teacher_id
student_id
교사
id
name
당신이이 Inner Joins을 사용하십시오. 내부 조인은 조인 술어를 기반으로 두 테이블의 컬럼 값을 결합하여 새로운 결과 테이블을 작성합니다. 귀하의 질문은 아마 다음과 비슷한 모습이 될 것입니다
SELECT student.name
FROM student
INNER JOIN student_has_teacher ON (student_has_teacher.student_id = student.id)
INNER JOIN teacher ON (teacher.id = student_has_teacher.teacher_id)
WHERE teacher.name = 'John';
물론 선택 사항 *을 사용해서는 안되며, 너무 가난한 기술입니다. 가입 할 때 서버 및 네트워크 리소스를 낭비합니다. 가난한 기술의 사용을 장려하지 마십시오. – HLGEM
@HLGEM : 네 말이 맞아. 내 대답이 수정되었습니다. –
첫 번째 쿼리는 아래가 student_has_teacher에서 중복 레코드 수 있으며, 그런 경우 경우에도 중복 결과가 발생하지 않도록합니다 가정
select s.id, s.name
from student s
where s.id in (
select sht.student_id
from student_has_teacher sht
inner join teacher on sht.teacher_id = t.id
where t.name = 'John'
)
하는 경우 이런 식으로, 당신은 조인 사용할 수 student_has_teacher에서이 중복되지 않습니다
select s.id, s.name
from student s
inner join student_has_teacher sht on s.id = sht.student_id
inner join teacher on sht.teacher_id = t.id
where t.name = 'John'
SELECT s.name
FROM student s
INNER JOIN student_has_teacher st ON s.id = st.student_id
INNER JOIN teacher t ON st.teacher_id = t.id
WHERE t.name = 'John'
다음 쿼리를 통해 원하는 결과를 얻을 수 있습니다.
SELECT st.name
FROM student AS st
LEFT JOIN student_has_teacher AS stte ON st.id = stte.student_id
LEFT JOIN teacher AS te ON stte.teacher_id = te.id
WHERE te.name = "John"
숙제 문제가 있습니까? – Macros
http://www.w3schools.com/Sql/sql_join.asp –
분명히 INNER JOHN 절을 조사해야합니다. –