数据库类型MYSQL
创建了3个表:
CREATE DATABASE studentinfo;   /*数据库创建成功*/
USE studentinfo
//创建学生表
Create table student(
sno varchar(7) not null,
name varchar(7),
primary key(sno));
//插入数据
insert student values('1','zhang');
insert student values('2','wang');
insert student values('3','焦');
//创建课程表
Create table course(
cno varchar(7) not null,
name varchar(7),
primary key(cno));
//向course 录入数据
insert course values('1','math');
insert course values('2','english');
//添加成绩表
create table stu_course(
sno varchar(7) not null,
cno varchar(7) not null,
grade int,
foreign key(sno)  references student(sno),
foreign key(cno ) references course(cno),
primary key(sno,cno));
//录入成绩
insert stu_course values('1','1',98);
insert stu_course values('2','2',89);
insert stu_course values('1','2',90);
insert stu_course values('2','1',60);当我使用查询语句:
select student.name,cno 
from student,course 
where cno like '1' ;
+-------+-----+
| name  | cno |
+-------+-----+
| zhang | 1   |
| wang  | 1   |
| 焦    | 1   |
+-------+-----+
结果出现了 '焦'同学选秀了1号课程   /*焦同学并没有选修的记录*/
当我使用查询语句:
select student.name, grade 
from student,stu_course 
where cno like '1';
'焦'同学的成绩出现了,并且与1号同学成绩一样。
+-------+-------+
| name  | grade |
+-------+-------+
| zhang |    98 |
| zhang |    60 |
| wang  |    98 |
| wang  |    60 |
| 焦    |    98 |
| 焦    |    60 |
+-------+-------+
请问是哪里出现问题了。

解决方案 »

  1.   

    select student.name,cno  
    from student s ,course c,stu_course  sc
    where c.cno ='1'
    and  s.sno =sc.sno and c.cno=sc.cno;
      

  2.   


    查询多个表连接的数据时,如果是关联表,拼到一起要记得写连接条件!
    1楼后边添的 and...  就是了。
      

  3.   


    select s.name,c.no,sc,grade
    from student s,course c,stu_course sc 
    where cno like '1' and s.sno = c.sno and s.sno = sc.sno
    --sno 是学号!