【问题标题】:SQL query that joins 3 tables连接 3 个表的 SQL 查询
【发布时间】:2015-06-09 09:35:06
【问题描述】:

我刚刚开始尝试表关系和连接查询。

我有 3 张桌子:peoplecoursebridge

我想要做的是,能够选择一个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

【问题讨论】:

  • 从代码开始。它有助于显示你哪里出错了

标签: sql join


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多