假如有4个表。我知道这样做,“学生信息表”结构不合理,我仅仅为了说明一下问题。另外此问题不涉及到内连接,外连接,左右连接之类的问题,我就像搞清晰语法。
————————————————————————————————
成绩表:        学生编号,课程编号,成绩。
课程表:        课程编号,课程名称。
学生表:        学生编号,学生姓名。
学生信息表:学生姓名,家庭住址。
————————————————————————————————我现在想做一个试图,里边显示几个字段。
"学生姓名","课程名称","成绩","家庭住址"
----------------------------------------------------------------
SELECT 学生表.学生姓名,课程表.课程名称,成绩表.成绩,学生信息表.家庭住址
FROM 成绩表 --此表为主表
     JOIN 课程表 
          ON 成绩表.课程编号 = 课程表.课程名称
     JOIN 学生表 
          ON 成绩表.学生编号 = 学生表.学生编号
     JOIN 学生信息表
          ON 学生其他信息表.学生姓名 = 学生表.学生姓名
——————————————————————————————————
这样对吗?
我主要是不很明白,在每个"t1 join t2 on t1.a = t2.a"之间如何衔接呀,又不能用
and。像我刚才写的那样直接衔接下一个join吗?
十分感谢呀!!!

解决方案 »

  1.   

    SELECT 学生表.学生姓名,课程表.课程名称,成绩表.成绩,学生信息表.家庭住址
    FROM 成绩表 --此表为主表
        inner JOIN 课程表 
              ON 成绩表.课程编号 = 课程表.课程编号
        inner JOIN 学生表 
             ON 成绩表.学生编号 = 学生表.学生编号
       inner  JOIN 学生信息表
              ON 学生信息表.学生姓名 = 学生表.学生姓名
      

  2.   

    我的LZ。谢谢xmlquit(下輩子再也不玩電腦)这个问题不牵扯到左右连接,内联,外联之类的问题,那些概念我已经搞懂了,我就是想知道在每个"t1 join t2 on t1.a = t2.a"之间如何衔接呀,这个问题不牵扯到左右连接,内联,外联之类的问题,那些概念我已经搞懂了,这个问题不牵扯到左右连接,内联,外联之类的问题,那些概念我已经搞懂了,这个问题不牵扯到左右连接,内联,外联之类的问题,那些概念我已经搞懂了,谢谢各位
      

  3.   

    我就是想知道在每个"t1 join t2 on t1.a = t2.a"之间如何衔接呀,先到t1表的一行,用a,找到 t2所有的行,与t2有a字段的连再下一行,如果没有就再下一行,再下一行,用a,找到 t2所有的行,与t2有a字段的连
      

  4.   

    对你的提法不是很理解,看是不是下面的意思:
    select a.*,b.*,c.*
    from a 
    inner join b on a.col1 = b.col1
    inner join c on b.col2 = c.col2--这样的处理结果是用第一个inner join产生的结果集来连接第二个inner join,以产生新的结果集
    --连接 on 之后的条件和些where之后的条件是一样的,比如连接需要满足两个条件,可以如下写: on a.col1 = b.col1 and a.col2 = b.col2
    --如果想改变多个inner join之间的连接次序,可以通过加括号()的方式进行处理,如
      

  5.   

    可以这样理解:t1 join t2 on t1.a = t2.a"
    先将T1 T2两表作笛卡儿乘积,也就是t1的任何一行与t2的任何一行都组成一个新行,然后用连接条件t1.a = t2.a进行筛选,符合条件的留下,不符合的去掉(不显示)可以这样接着理解,做完这些后,微软花好多人力物力开发的所谓查询优化机制才开始发挥作用,在和你上面的做法结果一样的前提下,提高查询速度,内部的做法我们就不理他了,反正结果不变