企业动态关于我们联系我们
   建站常识
 域名常识
域名解析问题集锦
域名基础知识概述
域名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

本站搜索关键词:南京网站建设、南京建站、南京SEO推广、南京网络公司
   广告也精彩
版权所有:南京欧万网络服务工作室 www.owon.cn sitemap