企业动态关于我们联系我们
   建站常识
 域名常识
域名解析问题集锦
域名基础知识概述
域名dns问题集锦
国内域名转入业务问题集锦
 空间常识
虚拟主机产品说明书
FTP上传注意事项
ftp操作常识问题集锦
网站无法上传怎么办?
 邮局常识
什么是电子邮件地址?
企业邮箱与免费邮箱的区别,企业邮箱的优点?
什么是SMTP?
什么是POP3?
 建站常识
企业如何建好网络营销
三种类型企业网站的作用
如何推广B2C独立网店
做网站快速成功的九个步骤
 SEO 知识
什么是SEO?
什么是SPAM?
SEO和SPAM有什么区别?
影响SEO的几点常识

首页技术交流ASP
asp 跨表搜索   2013/5/9   返回前页

大家在浏览别人网站时可能会看到有的网站有站内搜索功能,那么怎么做站内搜索呢?如果整个站的信息共用一张表数据那当然就简单了,用模糊查找就可以了
sql="select * from mytable where title like '%"&keyword&"%' order by id desc"
如果要搜索的数据来自不同的表,表的结构可能相同,也可能不同,那怎么办呢?这时候就要用到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


   广告也精彩
版权所有:南京欧万网络服务工作室 www.owon.cn sitemap