3个表的SQL查询(或连接)

use*_*653 3 sql join inner-join

第一次在Stack Overflow问一个问题......令人惊讶的资源,但是只有一件事让我感到困惑的是作为SQL的新手.

我有三张桌子,我想获得与鲍勃学生有联系的所有导师的姓名.

表1:教师

================
ID     Name
================
1     Bob
Run Code Online (Sandbox Code Playgroud)

表2:学生

===================================
STUDENT_ID     Name     TEACHER_ID
===================================
1              Jayne    1
2              Billy    5
3              Mark     2
Run Code Online (Sandbox Code Playgroud)

表3:MENTOR_RELATIONSHIPS

==============================
ID     STUDENT_ID    MENTOR_ID
==============================
1      1             3
2      2             2
3      3             3
Run Code Online (Sandbox Code Playgroud)

表4:导师

=====================
MENTOR_ID     Name  
=====================
1            Sally
2            Gillian
3            Sean
Run Code Online (Sandbox Code Playgroud)

我想运行一个查询来查找Bob的学生的所有导师.所以所有学生的导师都有TEACHER_ID = 1

在这种情况下,肖恩就是结果.

我知道它与Joins有关,或者我可以使用普通查询找到它吗?

任何帮助深表感谢!非常感谢...

dan*_*ius 7

这应该做的工作

select distinct m.name from students s
inner join mentor_ralationships mr on mr.student_id=s.student_id
inner join mentors m on m.mentoir_id=mr.mentor_id
where s.teacher_id=1;
Run Code Online (Sandbox Code Playgroud)

  • 它是表m的别名而不是"mentor"而不是"students"而mr而不是"mentor_ralationships"别名在复杂的连接查询中非常有用 (2认同)