课程与课件是一对多的关系,用户与课件是多对多的关系。那我现在要找某一个课程下的所有用户sql语句怎么去写??或者直接写个存储过程
 
COURSE_ID 课程id
 
VIDEO_ID   课件id
 
USER_ID 用户id

解决方案 »

  1.   

    类似
    select * form 用户 inner join 课程 on 用户.USER_ID= 课件.VIDEO_ID where 课件.COURSE_ID=xxx
      

  2.   

    用户.USER_ID= 课件.VIDEO_ID 这个好像不行吧!我总共有四张表
    T_USER:用户基本信息表
    T_COURSE:课程表的基本信息
    T_VIDEO:课件表,引用外键COURSE_ID
    T_USER_LEARNING_RECORD:用户课件关联表,两个外键(USER_ID,VIDEO_ID)
      

  3.   

    select * from T_COURSE left join T_VIDEO on T_COURSE.COURSE_ID=T_VIDEO.COURSE_ID and left join T_USER_LEARNING_RECORD on T_VIDEO.VIDEO_ID=T_USER_LEARNING_RECORD.vodep_id
      

  4.   


    select * from T_COURSE left join T_VIDEO on T_COURSE.COURSE_ID=T_VIDEO.COURSE_ID and left join T_USER_LEARNING_RECORD on T_VIDEO.VIDEO_ID=T_USER_LEARNING_RECORD.vodeo_id where T_COURSE.course_id=xxxx;
      

  5.   

    思路如下,用到行转列 函数wmsys.wm_concat
    1,select ,wmsys.wm_concat(课件ID)课件ID from 课程表 where  课程ID='你要选的id'  order by 课件ID //此处需要排序,以后做对比用
        结果为一列一行值: "课件ID,课件ID2,课件ID3,课件ID4..."
    2.select ,wmsys.wm_concat(课件ID)课件ID,用户ID  from 用户表 
    group by 用户ID  order by 课件ID
      结果:"课件ID,课件ID2,课件ID3,课件ID4..." 用户1
           "课件ID,课件ID2,课件ID3,课件ID4..." 用户2
           "课件ID,课件ID2,课件ID3,课件ID4..." 用户3然后 拿 2的结果集中 课件ID like '结果1中的课件ID%'拼成一句SQL太麻烦,楼主自己拼吧。 顺便说一下 wmsys.wm_concat是oracle 的函数,SqlServer 的话 楼主直接写个 函数就好了。
      

  6.   

    select user_id from table1 where video_id like (
     select video_id from table2 where course_id=@couseid)
      

  7.   

    select * from T_USER
    where T_USER.userId in (
    select T_USER_LEARNING_RECORD.userId from T_USER_LEARNING_RECORD left join T_VIDEO 
    on T_USER_LEARNING_RECORD.videoId=T_VIDEO.videoId
    where T_VIDEO.courseId in(
    selsct T_COURSE.courseId  from T_COURSE 
    where T_COURSE.courseName=xxxx))
      

  8.   

    select user_id from table1 where video_id in (
     select video_id from table2 where course_id=@couseid)
    弄错了,应该是"in”才对