问一个数据库问题
所在版块:社会百科 发贴时间:2004-01-08 00:38

用户信息
复制本帖HTML代码
高亮: 今天贴 X 昨天贴 X 前天贴 X 
有3个表,一个放学生名字,一个放学科名字,一个放学生学的课。
student(sname)
course(cname)
study(sname,cname)
数据是这样的
student: {(A), (B)}
course: {(CS1101), (CS1102)}
study: {(A, CS1101), (B, CS1102)}

现在我想知道每个学生学了几门课(自我感觉这是个很普通的目的,一点也不刁钻),我希望得到的答案是{(A, 2), (B, 0)}
于是我这样
select student.sname, count(study.cname) from student, study where student.sname=study.sname group by student.sname
但得出的结果是{(A, 2)}。没有B,因为B没有学任何课。
有没有什么办法达到这个目的?不能有嵌入查询,最好不要创建临时表。


下面是我在mysql上的实验结果。
mysql> create table student (sname char(10) primary key);
Query OK, 0 rows affected (0.08 sec)

mysql> create table course (cname char(10) primary key);
Query OK, 0 rows affected (0.05 sec)

mysql> create table study (sname char(10), cname char(10));
Query OK, 0 rows affected (0.06 sec)

mysql> insert into student values ('A'), ('B');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> insert into course values ('CS1101'), ('CS1102');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> insert into study (sname, cname) values ('A', 'CS1101'), ('A', 'CS1102');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> select student.sname, count(study.cname) from student, study where student.sname=study.sname group by student.sname;
+-------+--------------------+
| sname | count(study.cname) |
+-------+--------------------+
| A | 2 |
+-------+--------------------+
1 row in set (0.00 sec)
.
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!

Put your OWN COOL signature here!
 相关帖子 我要回复↙ ↗回到正文
问一个数据库问题 吴永铮   (1597 bytes , 455reads )
answer 快快跑   (348 bytes , 523reads )
多谢多谢 吴永铮   (0 bytes , 292reads )