有一个任务表task,一个答卷主表answer,一个答卷明细表answer-detail,一个题干表subject,一个题目选项
表subject-option。
答卷明细表中存了题干id(sid),题目选项id(oid),学生所答的答案内容text,答案主表id(qaid)sql为oracle9i已知任务id=1000
select * from answer a,task T,answer_detail f where a.qtid=t.qtid and a.qaid = f.qaid and t.qtid=1000;
得出以下
OTHERTEXT                                                                                                           QAID                                     OID                                     SID
-------------------------------------------------------------------------------- --------------------------------------- --------------------------------------- ---------------------------------------
                                                                                                                   13550                                     596                                    1074
                                                                                                                   13550                                   13108                                   13447
                                                                                                                   13550                                   13100                                   13435
                                                                                                                   13550                                   13104                                   13441
10                                                                                                                 13550                                       0                                   13443
<div>what i am gonna do babe</div>                                                                                 13550                                       0                                   13445
                                                                                                                   13760                                     597                                    1074
                                                                                                                   13760                                   13109                                   13447
                                                                                                                   13760                                   13101                                   13435
                                                                                                                   13760                                   13105                                   13441
130                                                                                                                13760                                       0                                   13443
<div>iloveubabe</div>                                                                                              13760                                       0                                   13445
                                                                                                                   13890                                     599                                    1074
                                                                                                                   13890                                   13111                                   13447
                                                                                                                   13890                                   13103                                   13435
                                                                                                                   13890                                   13107                                   13441
410                                                                                                                13890                                       0                                   13443
<div>全部选择d</div>                                                                                               13890                                       0                                   13445                                                                                                                   13900                                     596                                    1074
问题来了,如果只传一个查询条件。例如题干id=596,选项id=13550的时候,此时,第一行记录就显示正确,即sid=1074 and OID=596
但是如果选题干id=596,选项id=13550,且题干id=13108,选项id=13447时,即(sid=1074 and OID=596)and(sid=13550 and OID=13108)
显然这样就不能选出记录了。
其实希望得出的结论是qaid=13550的那条记录,只需显示一行即可。请问高人此题何解?解决即给分。谢谢

解决方案 »

  1.   

    col oid  for a15
    col sid  for a15
    col qaid for a15在sqlplus里先这样搞一下,
    数据折行把我都看晕了...
      

  2.   

    我现在理解能力越来越差了~~老看不懂问题~~汗~·
    (sid=1074 and OID=596)OR(sid=13550 and OID=13108) 
    是要这样吗?
      

  3.   

    分析不清楚你的表结构,所以简单的写了一下,楼主把[xx]替换成你的对应表:
    select
        *
    from
        answer a,task t,answer_detail f
    where 
        a.qtid=t.qtid and a.qaid = f.qaid and t.qtid=1000
        and
        exists(select * from xx where m.QAID=a.qtid and sid=1074  and OID=596 )   
        and
        exists(select * from xx where m.QAID=a.qtid and sid=13550 and OID=13108);
      

  4.   

    task.qtid=answer.qtid  任务表和答卷主表
    answer.qaid=answer-detail.qaid 答卷主表和答卷明细表
    answer-detail.sid=subject.sid 答卷明细表和题干表
    answer-detail.oid=subject-option.oid 答卷明细表和题目选项表
      

  5.   

    其实,我觉得你这样写sql会很糟的,你要通过这个sql得到什么数据,最好写到select的后面,难道你想得到的就是所有表的全部资料吗?我想未必吧,这样你得到资料的冗余度是很高的哦,资料不能象你想象中的那样也很正常!
      

  6.   

    其实,我觉得你这样写sql会很糟的,你要通过这个sql得到什么数据,最好写到select的后面,难道你想得到的就是所有表的全部资料吗?我想未必吧,这样你得到资料的冗余度是很高的哦,资料不能象你想象中的那样也很正常!