有3张表,教师表teacher(tid);课程表course(cid,cb),其中字段cb是该课程的点击次数;教师课程关系表tc(tid,cid)。教师每点一次该课程,该课程的点击数增1,一个老师可以点击多门课程,一门课程也可以被多个老师点击,现要查询某一老师点击某一课程的点击次数,请问sql语句如何写?

解决方案 »

  1.   

    cb入在tc表中(tid,cid,cb) --那个老师点了那个课程多少次。
    这样才能统计一个老师点了各种课程的次数。也可以求出一个程课的总点的数。
      

  2.   


    select a.tid,c.cb
    from teacher a,tc b,course c
    where a.tid = b.tid and b.cid = c.cid
        and a.tid = .. and c.cid = ..
      

  3.   


    SELECT T.TID,C.CID,TC.CID
    FROM TC
    INNER JOIN COURSE C
    ON TC.CID=C.CID
    INNER JOIN TEACHER T
    ON TC.TID=T.TID
    WHERE TC.TID=? AND C.CID=?
      

  4.   

    不好意思,看错了,应该这样;WITH TEMP
    AS 
    SELECT TID,CID,COUNT(TID) AS COUNT
    FROM TC
    GROUP BY TID,CID
    SELECT T.TID,C.CID,TC.COUNT
    FROM TEMP TC
    INNER JOIN COURSE C
    ON TC.CID=C.CID
    INNER JOIN TEACHER T
    ON TC.TID=T.TID
    WHERE TC.TID=? AND C.CID=?
      

  5.   

    不是课程被点击一次就生成一条记录,是cb字段每次自增1,记录该课程被点击的次数
    还有,请问楼上的temp是什么意思,有点不太明白
      

  6.   


    CREATE TABLE TEACHER
    (
       TID VARCHAR(50),
       NAME VARCHAR(50)
    )
    CREATE TABLE COURSE
    (
     CID VARCHAR(50),
     CB INT
    )
    CREATE TABLE TC
    (
      TID VARCHAR(50), 
      CID VARCHAR(50)
    )INSERT INTO TEACHER VALUES('A','ZHAWNG')
    INSERT INTO TEACHER VALUES('B','LISI')INSERT INTO COURSE VALUES('1',3)
    INSERT INTO COURSE VALUES('2',30)INSERT INTO TC  VALUES('A','2')SELECT T1.*,T2.CB,T3.* FROM TEACHER  T1 INNER JOIN (SELECT * FROM TC ) 
    T3 ON T1.TID = T3.TID INNER JOIN (SELECT * FROM COURSE) T2 ON T3.CID=T2.CID
    /*  RESULT
      TID   NAME   CB  TID  CID
      A     ZHAWNG  30   A 2
    */
      

  7.   


    表结构 teacher(tid,....) ,course(cid,....),tc(tid,cid,cb)-- 现在要选某个老师的就直接 select cb from tc where tid=@tid
    -- 要查看课程的 select sum(cb) as cb from tc where cid=@id-- 要查某个老师的某一门课的 select cb from tc where tid=@tid and cid=@cid