none
数据库之间多表查询 RRS feed

  • 问题

  • 一个学生系统数据库 包含 学生表(学号,姓名,年级,课程) 课程表(课号,学号,课程名) 选课表(课号, 学号,年级,成绩)
     现在要查询 大4学生选“心理学”的同学的姓名,学号和成绩
      请问怎么做啊,,我才上几节SQL的课,还不是很了解,今天预习到 了,想先在这问一下大家,,谢谢了
    人就要不断追求才会进步!
    2009年12月17日 13:54

答案

  • select a.学号, a.成绩, c.姓名
    from 选课表 a join 课程表 b on a.课号 = b.课号 join 学生表 c on a.学号 = c.学号
    where b.课程名 = '心理学'

    a表                b表
    ----------------------
    aId               bId
    1                  1
    2                  3
    3                  4


    --a join b on a.aId=b.bId,如果符合条件(bId存在aId数据)联接成功,aId数据1,3

    --a left join b on a.aId=b.bId,如果不符合条件(bId不存在aId数据)右边b表所有列为null,aId数据1,2,3(结果行数=左边)

    --a right join b on a.aId=b.bId,如果不符合条件(aId不存在bId数据)左边a表所有列为null,bId数据1,3,4(结果行数=右边)

    --a full join b on a.aId=b.bId,等于left join、right join合并
    • 已标记为答案 Irvin518 2009年12月21日 2:57
    2009年12月18日 3:04

全部回复

  • Read about join in sql books online.
    2009年12月17日 15:15
  • 一个学生系统数据库 包含 学生表(学号,姓名,年级,课程) 课程表(课号,学号,课程名) 选课表(课号, 学号,年级,成绩)
     现在要查询 大4学生选“心理学”的同学的姓名,学号和成绩
      请问怎么做啊,,我才上几节SQL的课,还不是很了解,今天预习到 了,想先在这问一下大家,,谢谢了
    人就要不断追求才会进步!

    select Join 的语法

    http://msdn.microsoft.com/en-us/library/aa978304(VS.71).aspx

    2009年12月17日 15:51
  • Select a.学号, a.成绩, c.姓名
    From 选课表 a Left Outer Join 课程表 b On a.课号 = b.课号 Left Outer Join 学生表 c on a.学号 = c.学号
    Where b.课程名 = '心理学'
    2009年12月18日 2:25
  • select a.学号, a.成绩, c.姓名
    from 选课表 a join 课程表 b on a.课号 = b.课号 join 学生表 c on a.学号 = c.学号
    where b.课程名 = '心理学'

    a表                b表
    ----------------------
    aId               bId
    1                  1
    2                  3
    3                  4


    --a join b on a.aId=b.bId,如果符合条件(bId存在aId数据)联接成功,aId数据1,3

    --a left join b on a.aId=b.bId,如果不符合条件(bId不存在aId数据)右边b表所有列为null,aId数据1,2,3(结果行数=左边)

    --a right join b on a.aId=b.bId,如果不符合条件(aId不存在bId数据)左边a表所有列为null,bId数据1,3,4(结果行数=右边)

    --a full join b on a.aId=b.bId,等于left join、right join合并
    • 已标记为答案 Irvin518 2009年12月21日 2:57
    2009年12月18日 3:04
  • 题目写得有问题,不是数据库之间的多表查询,而是一个数据库中的多表查询。这个用Join就好了,sql studio的回答很完整了。
    2009年12月22日 2:52
  • 忘了说了,跨数据库的多表查询SQL Server不支持。
    2009年12月22日 2:52
  • Are you serious?
    2009年12月22日 2:55