Qyanxiaoyou
2017-08-09 14:36
采纳率: 58.3%
浏览 1.2k

mysql数据库,如何获取三个关联表的所有记录

一对一教学下单
表一(person表):字段有person_id(个人id),person_name(名字),person_age(年龄);
表二(course表):字段有course_id(课程id),teacher_id(教师id),student_id(学生id),course_name(课程名称),course_duration(课程时长,分钟),course_times(课程次数);
表三(order表):字段有order_id(订单id),course_id(课程id),money(金额),method(付款方式);
譬如,person表,记录为1,张三,28;2,李四,16;3,赵五,17;
course表,记录为1,1,2,数学,90,7;2,1,3,英语,90,10;
order表,记录为1,1,700,次结;2,2,1000,次结;
要求获取到教师名字,学生名字,课程名称,课程时长,课程次数,金额,付款方式,请问如何select???
最后结果应该是张三,李四,数学,90,7,700,次结;张三,赵五,英语,90,10,1000,次结
拜托各位大神帮忙~~~

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 砸死接触 2017-08-10 01:20
    已采纳
     SELECT 
          pt.person_name AS "teacherName",
          ps.person_name AS "studentName",
          c.course_name,
          c.course_duration,
          c.course_times,
          o.money,
          o.method
    FROM course c
    LEFT JOIN  person pt ON pt.id=c.teacher_id
    LEFT JOIN  person ps ON ps.id=c.student_id
    LEFT JOIN  order o ON o.course_id=c.id;
    

    你的要求 课程是焦点 其他表都是与它相关联

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 首先说下,多表查询你就把有关联的id 连起来就行了,至于你要查什么就select 什么。 还有你表怎么设计的,既有teacher_id,又有student_id,那你的teacher表呢?

    评论
    解决 无用
    打赏 举报
  • weixin_39147820 2017-08-10 02:33

    表二(course表)中的teacher_id数据没看到管理的数据,你的表设计有点问题哦

    评论
    解决 无用
    打赏 举报
  • dukaqi 2017-08-10 07:01

    你的表设计得有问题吧,如果一个课程有100个学生,是不是要在course表里插入100条数据???

    评论
    解决 无用
    打赏 举报
  • 狮子的旅途 2017-08-10 11:45

    select c.教师名字,p.学生名字,c.课程名称,c.课程时长,c.课程次数,o.金额,o.付款方式 from person p ,course c,order o where p.person_ID = c.persion_id
    and c.course_id = o.course_id
    字段名称自己去改吧

    评论
    解决 无用
    打赏 举报