日期:2014-05-17  浏览次数:20652 次

问一个sql
有两个表A和B是多对多的关系,引入了一个中间表AB,外键是AID和BID,现在我要通过AID取B表中对应的数据,这个sql怎么写比较好

------解决方案--------------------
select a.* , b.* from a, b, ab
where a.id = ab.aid and ab.bid = b.id
------解决方案--------------------
给出一个多对多的经典例子,学生(A) 与 课程(B),得分则为AB表
SQL code

 
SQL> select * from student;
 
       SID SNAME
---------- --------------------
         1 张三
         2 李四
         3 王武
 
SQL> select * from course;
 
       CID CNAME
---------- --------------------
        11 语文
        12 数学
        13 英语
 
SQL> select * from score;
 
      SCID        SID        CID      SCORE
---------- ---------- ---------- ----------
       111          1         11         80
       112          1         12         78
       113          1         13         90
       114          2         11         82
       115          2         12         66
       116          2         13         92
       117          2         11         78
       118          2         12         84
       119          2         13         80
 
9 rows selected

SQL> SELECT S.SID, S.SNAME, C.CNAME, SC.SCORE
  2    FROM STUDENT S, --学生表
  3         COURSE  C, --课程表
  4          SCORE SC --得分表
  5   WHERE S.SID = SC.SID
  6     AND SC.CID = C.CID;
 
       SID SNAME                CNAME                     SCORE
---------- -------------------- -------------------- ----------
         2 李四                 语文                         78
         2 李四                 语文                         82
         1 张三                 语文                         80
         2 李四                 数学                         84
         2 李四                 数学                         66
         1 张三                 数学                         78
         2 李四                 英语                         80
         2 李四                 英语                         92
         1 张三                 英语                         90
 
9 rows selected
 
 
SQL>