2017-11-23 3 views
0

내가 가진 3 SQL 테이블 : 나는 학생의 이름과 courseName을 찾을 필요가하위 쿼리를 사용하여 세 테이블을 조인하는 방법?

tb1: name id and phone of student 
tb2: courseName,courseNum 
tb3: id,courseNum,grade 

그 학년> 80

내가 시도 :

select * from tb1 where taz in(
    select taz from tb3 where grade>80 
) 

select courseNum from tb2 where courseName in(
    select * from tb3 where grade>80 
) 

작동하지만 어떻게 2 하위 쿼리에 가입 할 수 있습니까? 다음과 같이 조인을 사용

+3

힌트 : **'JOIN' ** – Wanderer

+1

일부 샘플 테이블 데이터와 예상되는 결과를 추가하십시오. 형식이 아닌 텍스트로서 이미지가 아닙니다. – jarlh

답변

0

시도 :

SELECT * 
FROM tb3 t3 INNER JOIN tb2 t2 
ON t3.courseNum = t2.courseNum 
INNER JOIN tb1 t1 
ON t2.id = t1.id 
WHERE t3.grade > 80 
0

이 시도 :

SELECT c.name, b.courseName, a.grade 
FROM tb3 a 
JOIN tb2 b ON a.courseNum = b.courseNum 
JOIN tb1 c ON a.id = c.id 
WHERE a.grade > 80 
0

다음 쿼리는 당신에게 필요한 결과를 줄 것이다 :

SELECT t1.Name, t2.CourseName, t3.grade from tb3 
    INNER JOIN tb2 t2 ON t3.CourseNum = t2.CourseNum 
    INNER JOIN tb1 t1 ON t1.id = t3.Id 
where t3.grade > 80 
0

SMA의 대답은 사실이지만, 필요 작은 수정.
: 초 ON의 조건은 다음과 같아야합니다 t3.id = t1.id
: 우리는 이름과 courseName를 원한다.

SELECT t1.name, t2.coursename 
FROM tb3 t3 INNER JOIN tb2 t2 
ON t3.courseNum = t2.courseNum 
INNER JOIN tb1 t1 
ON t3.id = t1.id 
WHERE t3.grade > 80 
관련 문제