2015-04-04 79 views
0

我刚开始尝试表关系和连接查询。连接3个表的SQL查询

我有3个表格:people,course, bridge

我想要做的是,能够选择一个student,并得到什么他所有的course_names其出席,如果他是一个学生:像

SELECT(.......) where student_name = 'what I want'. 

我没有要发布的代码在这里,因为我所尝试的一切都是一团糟。

people

people_id student_name  
1   Alice 
2   Bob 
3   Caroline 
4   David 
5   Emma 

course

course_id course_name 
1   IT 
2   art 
3   sports 
4   math 
5   whatever 

bridge

people_id course_id people_role 
1   1  student 
1   3  student 
1   5  student 
2   1  student 
2   2  student 
2   5  student 
4   1  teacher 
+0

开始与代码的结果。它有助于显示你出错的地方 – 2015-04-04 13:01:05

回答

0
SELECT student_name, course_name 
FROM people p 
    INNER JOIN bridge b 
    ON p.people_id = b.people_id 
    INNER JOIN course c 
    ON b.course_id = c.course_id 
    WHERE p.student_name = 'Alice' AND b.people_role = 'student'; 

下面是运行它的一个例子:http://sqlfiddle.com/#!9/cd5f1/2

,或者如果你想看起来像student_name | course1,course2,...

SELECT student_name, group_concat(course_name) 
FROM people p 
    INNER JOIN bridge b 
    ON p.people_id = b.people_id 
    INNER JOIN course c 
    ON b.course_id = c.course_id 
    WHERE p.student_name = 'Alice' AND b.people_role = 'student' 
    GROUP BY student_name 

http://sqlfiddle.com/#!9/cd5f1/3

+0

完美地工作,非常感谢你 – Akos 2015-04-04 13:13:59