有一个任务表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的那条记录,只需显示一行即可。请问高人此题何解?解决即给分。谢谢
表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的那条记录,只需显示一行即可。请问高人此题何解?解决即给分。谢谢
解决方案 »
- 如何导出Oracle用户时,导出指定表【test用户中有个t_log表,我想导出除t_log外的所有表】
- oralce里如何建立临时表及会话问题。
- 急急急sys_connect_path用法
- 急:竖表如何实现成横表?
- 关于 Oracle中 distinct 的问题 之二
- oracle10g的函数问题,以前没写过,请教大家啊,看看错在那里了,在线等待了。
- select该如何写?
- 救命!配置MicroSoft ODBC for Oracle问题
- Oracle中能否用语句返回2个结果集回来。
- oracle9i 与 oracle9i Application server 有何区别啊?
- 请教高人 IMP-00057
- 谁帮我修改下这个存储过程~
col sid for a15
col qaid for a15在sqlplus里先这样搞一下,
数据折行把我都看晕了...
(sid=1074 and OID=596)OR(sid=13550 and OID=13108)
是要这样吗?
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);
answer.qaid=answer-detail.qaid 答卷主表和答卷明细表
answer-detail.sid=subject.sid 答卷明细表和题干表
answer-detail.oid=subject-option.oid 答卷明细表和题目选项表