求在结果中检索的算法!!!只要算法好,分不够再加!!!急…

6726172 2003-09-29 10:34:59
我想实现以下的功能:
输入查询条件,根据条件查出了结果。
现在想在这个结果的基础上从结果里面作进一步的查询挑选出想要的东西!
如果还不是自己想要的,还可以在新的结果中作再一次的检索,以此类推,直到找到想要的。效果类似于北大天网(http://bingle.pku.edu.cn)的"在结果中查找"?请高手解决……
...全文
39 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
fufan 2003-10-06
  • 打赏
  • 举报
回复
学完此文,结贴吧
http://www.ccw.com.cn/htm/app/aprog/01_10_23_2.asp
happymingnan 2003-10-05
  • 打赏
  • 举报
回复
学习.
难,有点晕.
mao5000 2003-10-05
  • 打赏
  • 举报
回复
把SQL语句存储在SESSION中,然后根据用户的选择判断是否为在结果中再次查询。
liuxiabao 2003-10-05
  • 打赏
  • 举报
回复
我up
htao007 2003-10-05
  • 打赏
  • 举报
回复
'``````````````````````````````````````````
' 处理检索的程序,包括在结果中进行再次查询
'``````````````````````````````````````````
session("num")=session("num")+1 '记录二次检索的次数
session(session("num"))=trim(request("Conque")) 'varN1--每次新的检索条件
iNum=session("num")
strQ1=" "
strQ2=" "
if iNum=1 then
strQ1=" mag_name like '%" & session(iNum) & "%'"
'strQ2=" mag_department like '%" & session(iNum) & "%'"
else
strQ1=" and mag_name like '%" & session(iNum) & "%'"
'strQ2=" and mag_department like '%" & session(iNum) & "%'"
end if
session("str1")=session("str1") & strQ1
'session("str2")=session("str2") & strQ2
sql="select * from magazine_tab where "
sql=sql & session("str1")' & " or " & session("str2")
set rs=cnn.execute(sql)
do until rs.eof
response.write(rs(1))
response.write(rs(2)&"<br>")
rs.movenext
loop
rs.close
cnn.close
set rs=nothing
set cnn=nothing
511214 2003-10-05
  • 打赏
  • 举报
回复
利用global.asa文件

global.asa

<script language=vbscript runat=server>
sub session_onstart
session("num")=0
end sub
sub session_onend
session("num")=0
session("num").abandon
for i=1 to session("num")
session(i).abandon
next
session("key").abandon
end sub
</script>

search.asp

<!-- include file="../inc/conn.asp" -->
<script language="javascript">
function Check()
{
if(search.key.value=="请输入关键字" )
{alert("请输入检索关键词!");
search.key.focus();
return(false);}
if(search.key.value=="" )
{alert("请输入检索关键词!");
search.key.focus();
return(false);}

}
</script>
<form action="secsearch.asp" method="post" name="search">
<font style="font-size: 12px">
<input name=key size="18" value="请输入关键字" onMouseOver="this.focus()" onBlur="if (value ==''){value='请输入关键字'}" onFocus="this.select()" onClick="if(this.value=='请输入关键字')this.value=''">
</font>
<input type=submit name=enter value="检 索" onclick="return Check()">
<input type=reset name=cancel value="重 写">
</form>

secsearch.asp

<!-- #include file="../inc/conn.asp" -->
<script language="javascript">
function Check()
{
if(secsearch.xs.value=="")
{alert("请输入二次检索关键词!");
secsearch.xs.focus();
return(false);}
}
</script>
<%
if session("num")=0 then
session("key")=trim(request.form("key"))
end if
session("num")=session("num")+1
session(session("num"))=trim(request.form("xs"))
%>
<%
sql="select * from thesis_tab where thesis_title like '%"&session("key")&"%'"
for j=2 to session("num")
sql=sql&"and thesis_title like '%"&session(j)&"%'"
next
response.write sql
set rs=conn.execute(sql)
%>
<table border="1" cellpadding="0" cellspacing="0" width="90%" style="font-family: 宋体; font-size: 9pt; word-spacing: 0; margin: 0" bordercolor="#000080" bordercolorlight="#000080" bordercolordark="#FFFFFF">
<%while not rs.eof
%>

<tr>
<td style="font-family: 宋体; font-size: 9pt"><%=rs("thesis_id")%></td>
<td style="font-family: 宋体; font-size: 9pt"><%=rs("thesis_title")%></td>
<td style="font-family: 宋体; font-size: 9pt"><%=rs("thesis_abstract")%></td>
<td style="font-family: 宋体; font-size: 9pt" align="center"><%=rs("thesis_key")%></td>
<td style="font-family: 宋体; font-size: 9pt" align="center"><%=rs("thesis_sort")%></td>

</tr>
<%
rs.MoveNext
wend
%>
</table>
<form name="secsearch" method="post" action="secsearch.asp">
<table align=center>
<tr>
<td>
<input type="text" name="xs" size="20" tabindex="1" style="font-family: 宋体; font-size: 9pt"></td>
<td><input type="submit" value="二次检索" name="submit" style="font-family: 宋体; font-size: 9pt" onclick="return Check()"></td>
</tr>
</table>
</form>

试试吧

超级大笨狼 2003-10-01
  • 打赏
  • 举报
回复
保存原来的查询条件, 但不是与新的查询条件做 AND 操作, 生成新的SQL语句.
是这样
select * from (select ....原先的语句) where 条件

这样比较好,不要用临时表的办法浪费服务器资源。

zorou_fatal(Red Star Over China)的办法也可以。
这家伙的mm很pp!!
zorou_fatal 2003-10-01
  • 打赏
  • 举报
回复
请大家多注意recordset对象的用法。
它本身有很多属性和方法,可以起到很大的作用。
不过效率吗,就不敢恭维了。
zorou_fatal 2003-10-01
  • 打赏
  • 举报
回复
rst.Filter=""
这个条件的内容可以由用户提交的表单动态产生.
zorou_fatal 2003-10-01
  • 打赏
  • 举报
回复
可以使用recordset对象的filter方法来实现
Exp
Set conn=server.createobject("adodb.connection")
conn.open "DSN=test;UID=zorou;PWD=zorou"
Set rst=server.createobject("adodb.recordset")
rst.open "select * from tablename order by id desc",conn,2,3
if rst.eof then
response.write "目前无记录"
else
rst.Filter="id=1"
while not rst.eof
response.write rst("id")
rst.movenext
wend
end if
511214 2003-10-01
  • 打赏
  • 举报
回复
这类问题怎么始终没有得到很好的解决

6726172 2003-10-01
  • 打赏
  • 举报
回复
谢啦,我的email:guangyong407@eyou.com
zorou_fatal 2003-10-01
  • 打赏
  • 举报
回复
恩,我写个大概吧.
6726172 2003-10-01
  • 打赏
  • 举报
回复
to zorou_fatal(Red Star Over China)
我太菜,能不能给个例子,像http://bingle.pku.edu.cn一样


zorou_fatal 2003-10-01
  • 打赏
  • 举报
回复
有什么问题吗?
还没解决?
6726172 2003-10-01
  • 打赏
  • 举报
回复
高手请进啊
6726172 2003-10-01
  • 打赏
  • 举报
回复
谢谢以上两朋友,我再试试
lious 2003-09-30
  • 打赏
  • 举报
回复
insert into #临时表
........在临时表的中的数据查询的语句。

wx25007 2003-09-30
  • 打赏
  • 举报
回复
另有思路,且试试:
为了方便起见,下面以abc代表数据库连接字符串,search表示新的查询条件
search="....."
sql="select....from...where "
sql=sql & search
rs.open sql,abc
rs.......
rs.close
.......

你只需要每次给serach的条件不断更新就可以了
wx25007 2003-09-30
  • 打赏
  • 举报
回复
我不知道这样是否可行,你可以尝试使用子查询,因为我没有应用过子查询,所以,只好建议你自己去查有关的资料了。呵呵
加载更多回复(10)

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧