当前位置: 代码迷 >> Oracle开发 >> 问一个sql解决方案
  详细解决方案

问一个sql解决方案

热度:34   发布时间:2016-04-24 07:34:04.0
问一个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 selectedSQL> 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>
  相关解决方案