SELECT a.`课程名`,a.`课程类别`,a.`学分`,b.`教师编号`,b.`学年`,b.`学期`,b.`学时`,d.`姓名` AS `教师名`
 FROM `课程信息表` AS a
LEFT OUTER JOIN `教师授课信息表` AS b ON b.`课程编号`=a.`课程编号`
LEFT OUTER JOIN `教师表` AS d ON d.`教师编号`=b.`教师编号`
WHERE 
a.`课程编号` NOT IN (SELECT c.`课程编号` FROM `学生选课信息表` AS c WHERE c.`学号`='95001');

解决方案 »

  1.   

    谢谢 我试试
    但我看资料上说MYSQL 不支持子查询的??
      

  2.   

    我刚才用了,显示#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select course.courseid from course,selclass where selclass.stun=‘3001099’
    从这个提示来看 我的好象不支持子查询,可是我的MYSQL 是 4.1.8的版本呀?
    请问有没有不用子查询的方式实现》???
      

  3.   

    4.1.8支持子查询,'select course.courseid from course,selclass where selclass.stun=‘3001099’
    这句好像和刚才我写的不太一样,course是什么表?
      

  4.   

    SQL 查询: SELECT course.courname, teacher.TNAME, tc.tyear, tc.tterm, tc.time, course.courkind, course.credit
    FROM course, teacher, tc
    WHERE tc.cid = course.courid
    AND tc.tid = teacher.TID
    AND course.courid NOT 
    IN (
    SELECT course.courseid
    FROM course, selclass
    WHERE course.courid = selcalss.courseid
    AND selclass.stuno = '3001099'
    )
    LIMIT 0 , 30 
    MySQL 返回: #1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select course.courseid from course,selclass where course.courid 
    上面是我在PHPMYADMIN 里输入的语句的返回,其中course 是课程表,tc是教师授课信息表,teacher是教师信息表,selclass是选课信息表。请看一下
      

  5.   

    为了保证数据完整性,还是使用左连接好一点。SELECT course.courname, teacher.TNAME, tc.tyear, tc.tterm, tc.time, course.courkind, course.credit
    FROM course 
    LEFT OUTER JOIN tc on tc.课程编号`=course.`课程编号`
    LEFT OUTER JOIN teacher on teacher.`教师编号`=tc.`教师编号`
    where
    course.`课程编号` NOT IN (SELECT selclass.`课程编号` FROM selclass WHERE selclass.`学号`='3001099');把上句中的汉字字段替换成你在表中使用的字段名,注意字段名前面有表名。
      

  6.   

    谢谢你,当我这里的MYSQL服务器还是显示版本不支持,我分开来使用就可以实现。
    您能不能帮我想个不用子查询的方法???
    再麻烦你一下。
      

  7.   

    呵呵,返回的信息不是说不支持子查询,是指你的子查询里语句有错误,子查询只从selclass表中取`课程编号`就可以了,如果你在子查询中再连接主表course当然就会出错了。还是把刚才那句汉字字段替换成你在表中使用的字段名,注意字段名前的表名要对应,试试看?SELECT course.courname, teacher.TNAME, tc.tyear, tc.tterm, tc.time, course.courkind, course.credit
    FROM course 
    LEFT OUTER JOIN tc on tc.cid=course.courid
    LEFT OUTER JOIN teacher on teacher.TID=tc.tid
    where
    course.courid NOT IN (SELECT selclass.courseid FROM selclass WHERE selclass.stuno='3001099');------------------------
    另外,你可以执行下面这句查询,如果能返回结果,就说明你的mysql支持子查询。
    SELECT course.courname, course.courkind, course.credit
    FROM course where course.courid NOT IN (SELECT selclass.courseid FROM selclass WHERE selclass.stuno='3001099');
      

  8.   

    大哥,不行,真的不行。
    我把语句的错误都改好了,还是不行,你加我qq,好好教教我18598396,MSN [email protected]