SELECT A.TITLEID,A.TITLENAME,C.ANSWERVALUE,COUNT(DISTINCT USERID)
from TITLES A,ANSWERS B,CANSWERS C
WHERE A.TITLEID = B.TITLEID AND B.ANSWERID = C.ANSWERID
GROUP BY A.TITLEID,A.TITLENAME,C.ANSWERVALUE
ORDER BY A.TITLEID,A.TITLENAME,C.ANSWERVALUE;我觉得直接关联就可以了

解决方案 »

  1.   

    select 
        t.TITLEID     as 题号,
        t.TITLENAME   as 题目,
        a.ANSWERVALUE as 选项值,
        NVL(count(c.ID),0) as 该选值用户数
    from
        TITLES   t,
        ANSWERS  a,
        CANSWERS c
    where
        t.TITLEID=a.TITLEID and a.TITLEID*=c.TITLEID and a.ANSWERID*=c.ANSWERID
    group by
        t.TITLEID,t.TITLENAME,a.ANSWERVALUE
      

  2.   

    select 
        t.TITLEID     as 题号,
        t.TITLENAME   as 题目,
        a.ANSWERVALUE as 选项值,
        NVL(count(c.ID),0) as 该选值用户数
    from
        TITLES   t
    inner join 
        ANSWERS  a
    on
        t.TITLEID=a.TITLEID
    left join
        CANSWERS c
    on
        a.TITLEID=c.TITLEID and a.ANSWERID=c.ANSWERID
    group by
        t.TITLEID,t.TITLENAME,a.ANSWERVALUE
      

  3.   

    SELECT A.TITLEID,A.TITLENAME,B.ANSWERVALUE,COUNT(DISTINCT B.USERID)
    from TITLES A,CANSWERS B
    WHERE A.TITLEID = B.TITLEID 
    GROUP BY A.TITLEID,A.TITLENAME,B.ANSWERVALUE
    ORDER BY A.TITLEID,A.TITLENAME,B.ANSWERVALUE
      

  4.   

    前面的错了,应该用左连接
    SELECT A.TITLEID,A.TITLENAME,B.ANSWERVALUE,COUNT(DISTINCT B.USERID)
    from TITLES A,CANSWERS B
    WHERE A.TITLEID = B.TITLEID(+) 
    GROUP BY A.TITLEID,A.TITLENAME,B.ANSWERVALUE
    ORDER BY A.TITLEID,A.TITLENAME,B.ANSWERVALUE