2015-04-04 92 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