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

请教大牛,数据库联表查询问题~~和普通联表情况不一样哦

现有两个表,student 学生表 (student_id,student_name,class_id)
和 class 课程表 (class_id,class_name),一个学生会上很多门课,所以student.class_id会是1,3,6,8这样的形式存值。

现在要查每门课有多少学生在上,怎么进行联表查询呢?

------解决方案--------------------
表的连接几十年没变,没有什么普通连表高级连表一说。

无非是你要用SQL技巧去解决煞笔的表设计,表设计得越煞笔,SQL技巧就越绚丽。

如果科目的字符不会重复 instr(student.class_id,class.class_id)>0

如果科目的字符重复就用(select level from dual connect by level<?)拆行。
------解决方案--------------------
select class_id, class_name, 
       ( select count(*) from student 
             where instr(student.class_id
------解决方案--------------------
',' , class.class_id
------解决方案--------------------
',')>0) amount
  from class;