如何使用子查询在三个表之间进行连接?

时间:2017-11-23 09:26:50

标签: sql

我有3个SQL表:

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子查询?

4 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分: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

答案 3 :(得分:0)

SMA答案是对的,但需要稍加修改。
第一个:第二个ON的条件应为:t3.id = t1.id
第二:我们需要name和courseName。

setItemViewCacheSize()