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

学生,课程之后选课信息表怎么设计??
学生表
id(PK),name

课程 --这里简化不要老师表了,老师名字可重复。
id(PK), name, teacher_name

然后还有一个选课信息的表。
怎么设计呢?

选课信息
学生id,课程id 

吗?应该怎么最好呢?

顺便问下,
1)怎么输出全部学生的选课信息? 按学生id排序。
学生id,课程name,teacher_name

2)输出学生最多的老师的名字。



------解决方案--------------------
选课信息表就用你说的。

1)怎么输出全部学生的选课信息? 按学生id排序。

select 
from 学生表 a.id as 学生ID,c.name as 课程name,c.teacher_name
inner join 选课信息 b on a.id=b.学生id
inner join 课程 c on b.课程id=c.id

2)输出学生最多的老师的名字。
select top 1 teacher_name
from 选课信息 a inner join 课程 b on a.课程Id=b.id
group by teacher_name
order by count(*) desc

如果是统计一门课程的最多学生的老师,改成
group by a.课程Id,teacher_name
------解决方案--------------------
选课表可以按照你那样做

你那两个查询就不写了,楼上的应该没问题
------解决方案--------------------
一楼正解

探讨

选课信息表就用你说的。

1)怎么输出全部学生的选课信息? 按学生id排序。

select
from 学生表 a.id as 学生ID,c.name as 课程name,c.teacher_name
inner join 选课信息 b on a.id=b.学生id
inner join 课程 c on b.课程id=c.id

2)输出学生最多的老师的名字。
select……