首页 新闻 会员 周边

2个表之间的关联产生第三个表疑问

0
[已解决问题] 解决于 2012-10-16 14:49

A

课程id  班级id

1        1

2        1

3        2

 B

班级id    学生id

1          2

1          3

准备用a和b关联成这样的:

课程id     学生id

1              2

2               2

1               3

2               3

 

就是通过班级,间接建立课程和学生的关联,怎么写sql :

insert into c(课程id,学生id) select a.课程id,b.学生id from a as a inner join b b on a.班级id=b.班级id?  可以么

问题补充:

班级id在每个表中都是重复的,能用inner join 么

 

A

课程id  班级id

1        1

2        1

1       2

2        2 这样的话,就有重复记录。怎么办

小明同学的主页 小明同学 | 初学一级 | 园豆:12
提问于:2012-10-16 14:15
< >
分享
最佳答案
0

可以这样处理,前提:一个学生只属于一个班级,即A,B两表中不会存在重复数据

奖励园豆:5
田林九村 | 老鸟四级 |园豆:2367 | 2012-10-16 14:36

我发现一个问题,如果学生a参加了班级1和2,班级1有a,b课程,班级2也有a,b课程,那么就保存了4个记录,学生a与课程a,b的记录重复记录了2次

小明同学 | 园豆:12 (初学一级) | 2012-10-16 14:38

A

课程id  班级id

1        1

2        1

1       2

2        2 这样的话,就有重复记录。怎么办

小明同学 | 园豆:12 (初学一级) | 2012-10-16 14:40

@小明同学: 那就改进sql吧

insert into c(课程id,学生id) SELECT DISTINCT a.课程id,b.学生id from a as a inner join b b on a.班级id=b.班级id
田林九村 | 园豆:2367 (老鸟四级) | 2012-10-16 14:42

@田林九村: 谢谢!

小明同学 | 园豆:12 (初学一级) | 2012-10-16 14:49
其他回答(2)
0

你这样子查询后的结果正确不呢

念念啊 | 园豆:415 (菜鸟二级) | 2012-10-16 14:20

你觉得呢,因为数据很多,我也不知道

支持(0) 反对(0) 小明同学 | 园豆:12 (初学一级) | 2012-10-16 14:20

@小明同学: 呵呵,对的

支持(0) 反对(0) 念念啊 | 园豆:415 (菜鸟二级) | 2012-10-16 14:30
0

你的表连接,看着怎么这么别扭啊

若雪封尘 | 园豆:463 (菜鸟二级) | 2012-10-16 14:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册