大连网站制作客服
主营业务
  • 网站制作
  • 网站维护
  • 网站推广
  • 域名空间
联系电话
联系人:尹先生
QQ:1050706570
E-mail:biz@noonenet.cn
地址:大连市甘井子区哲林北园29号
·首页 >> 网站技术 >> asp实现站内搜索 多个数据表

asp实现站内搜索 多个数据表

  更新时间:2010-11-25 15:15:10    编辑:阿帆

大家在浏览别人网站时可能会看到有的网站有站内搜索功能,那么怎么做站内搜索呢?如果整个站的信息共用一张表数据那当然就简单了,用模糊查找就可以了
sql="select * from mytable where title like ’%"&keyword&"%’ order by id desc"
如果要搜索的数据来自不同的表,表的结构可能相同,也可能不同,那怎么办呢?这时候就要用到union或union all了,union/union all用法详情点击这里查看!
以下是站内搜索数据来自多表的,搜索出的每个标题链接到不同文件(如news表数据肯定链接文件是newsshow.asp,article表数据链接到artshow.asp),复制过去就简单修改就可以使用

news_id,news_title,art_id,art_title分别是news表,article表中的字段

<%keyword=request("keyword") ’接收要查询的关键词
set rs=server.createobject("adodb.recordset")
sql="select * from (select news_id as id,news_title as title,’newsshow.asp?news_id=’ as urlfile from news where news_title like ’%"&keyword&"%’ union all select art_id,art_title,’artshow.asp?art_id=’ as urlfile from article where art_title like ’%"&keyword&"%’)as t order by id desc"
rs.open sql,conn,1,1
do while not rs.eof
response.write "<a href="""&rs("urlfile")&rs("id")&""">"&rs("title")&"</a><br>"
rs.movenext
loop
rs.close
set rs=nothing
%>
这样多表就用多个Union全并记录集就可以了。

注意:用union合并记录集时在各个select中不能含有order by 语句,只能在合并后的记录集中用order by子句排序,记录集中的字段以第一个select中的字段名为准,且查询字段数量,字段类型必须相同


union/union all用法

1、UNION 指令的目的是将两个 SQL 语句的结果合并起来。从这个角度来看, UNION 跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION 的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。
union只是将两个结果联结起来生成临时表一起显示,并不是联结两个表,
UNION 的语法如下:

[SQL 语句 1]
UNION
[SQL 语句 2]

假设我们有下面二个表,分别某学院对各个系统各专业的人数统计:外语系统,管理系统

dpenglish
id zyname stunum
1 外贸英语专业 25
2 商务英语专业 30
3 英语翻译专业 35


dpmanage
id zhuanye studentnum
1 信息管理专业 60
2 企业管理专业 30
3 物流管理专业 55


我们要查询这二个系统的人数列表(可能例子不太合适,就这个意思大家看下吧),SQL语句:

SELECT id,stunum FROM dpenglish
UNION
SELECT id,studentnum FROM studentnum

结果:

1 25
1 60
2 30
3 35
3 55


2、Union All

UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起。 UNION ALL 和 UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复。

UNION ALL 的语法如下: [SQL 语句 1]
UNION ALL
[SQL 语句 2]


还用上面的表:SQL语句:

SELECT id,stunum FROM dpenglish
UNION all
SELECT id,studentnum FROM studentnum

结果:

1 25
2 30
3 35
1 60
2 30
3 55

 

原载: lyhaobao的百度空间 http://hi.baidu.com/lyhabao/blog/item/ecb5d271292a64118601b00c.html
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。


Tags:asp实现站内搜索 多个数据表
同类文章:
· 解决ie8锚点链接不起作用
· 可控制滚动方向的连续滚动图片,默认向左滚动
· js代码 - 全选、取消全选
· ewebeditor编辑器漏洞防范
· Asp - SQL注入防范方法[最终篇]
返回新闻列表
top
本站关键字:大连网站制作 - 大连网站建设 - 大连网页制作
CopyRight © 2009-2012 No.1网络工作室 All Rights Reserved  sitemap
地址:大连市甘井子区哲林北园29号 电话:13889684613 E-mail:biz@noonenet.cn QQ:1050706570
logo