3s8首页  | 新闻 | GIS | GPS | RS | 测绘测量 | 资料下载 | 开发语言 | 数据库 | CAD | 求职招聘 | 物流交通 | 论坛 | 博客 | RSS订阅 网站地图 
中国3S吧
首页 | | GIS动态 | GIS基础 | GIS应用 | GIS书籍 | GIS论文 | GIS人物 | GIS技术 | GIS产品 | GIS软件 |

MapInfo重点难点讲解-SQL查询三


 日期:2007-09-20 论坛交流

相关推荐MapInfo SQL查询

考虑这样一个SQL Select:
Select columns: Customer,Count(*),Avg(Amount),Sum(Amount)
From tables: Orders
Group By Columns: Customer
这是一个在体质上与前一个相同的查询,除了我们现在是按顾客分组而不是按销售代表分组外,这个SQL Select找出订单Count,Average和Sum是针对各个顾客的而不是销售代表的。
下面的例子说明按多列分组:多重分组
Select olumns:Sales_Rep,Customer,Count(*),Avg(amount),Sum(Amount)
From tables: Orders
Group By Columns:Sales_Rep,Customer
在Group By Columns区,我们指定了两列名,在这种情况下,MapInfo首先按销售代表组合行,然后再按顾客组合。这个查询的结果表对应于每一个不同的顾客棗销售代表组合都有一个行。
当某个顾客通过两个或更多的销售代表订货时,那个顾客与第一个销售代表做的生意都有一个行来总结。全部行首先是按销售代表分组,然后,对于各个销售代表,又按顾客分组。
集合函数,MapInfo有下列集合函数:
Count(*):计算一个组内的记录个数,它仅用*作为其参数是因为它适用于整个 记录,而不是记录中的某个特定字段。
Sum(表达式):计算一个组全部记录表达式值的总和 中国3S吧 3s8.cn
Avg(表达式):计算一个组全部记录表达式值的平均值
Max(表达式):找出一个组全部记录表达式值中的最大值
Min(表达式):找出一个组全部记录表达式值中的最大值
以上所述的表达式,最简单的情况是一个字段名(列名)。
关于From tables
这个区告诉MapInfo要查询那些表,你必须在这个区最少输入一个表名。如果你要MapInfo查询两个或更多的表,就要输入用逗号分隔的一系列表名。
如果你在这个区输入了两个或两个以上的表名,那么,你还必须在Where Condition区指定表达式来告诉MapInfo如何连系这些表。
如果你输入了两个表名,MapInfo自动计算一个适当的Where Condition表达式。但是如果你用了三个或更多的表名,你必须手工修改这个表达式。当你按多表联接时,所有的表必须是基础表。你不能把结果表(例如Qurey5)用于多表SQL Selec。
关于Where Condition区
这个区有不同的任务,取决于你的查询性质。当你查询一个单表时,该区是可选的(即不填也可)。如果你查询涉及到连接两个或多个表,你必须指定一个Where Condition表达式,那个表达式必须表明MapInfo应该如何联接这两个表。
如果你愿意,你可以在该区输入过滤标准。输入过滤标准的方法是打入一个判断真假的逻辑表达式。例如,当你查询World表时,如果你只选择人口大于5百万的行,就要指定如下的Where Condition子句: 中国3S吧 3s8.cn
Where Condition:Population>5000000
这个区的数字中间不要打逗号。
关于Group by Columns区
这个区允许你小计你的结果表。如果你输入一个列名(或被逗号分隔的一串列名)到该区,MapInfo就小计你的查询结果,并且只给你显示出小计结果表,而不显示你的表的每个行。
计算小计是一个两步曲:
1.输入一个(或一组)列名到该区
2.输入同样的列名和集合运算器(诸如Sum或Count)到Select Columns区。Group by Columns区是可选的。如果你保留为空(默认的),MapInfo将不计算小计。
关于Order by Columns区
这个区允许你对你的结果表进行排序。如果你输入一个(或被逗号分隔的一组)列名到该区,MapInfo就以你输入的列作为关键字对你结果表的行进行排序。默认是升序,A在B之上,小数在大数之上。降序可在列名后跟一个desc字。例如:
Order by Columnsopulation desc
该区是可选的,如果空着,结果表将不排序。
 
关于Into table Named区
这个区允许你命名结果表。默认的结果表名是Selection。如果你要指定一个另外的名字,就把它打入该区。你输入的表名不应该是一个打开的表。如果你频繁使用SQL Select,并且如果你用selection作为你的结果表名,你会以得到许多左上重叠的结果表(例如Query1,Query2,Query3等)告终。这些Queryn表不会造成任何伤害;然而,有的人就是不喜欢这大量打开的表。如果你要避免这大量打开的Queryn表,那你在该区输入一个另外的表名就行了。例如你输入表名Qresults: 中国3S吧 3s8.cn
Into Table Named:Qresults
然后再进行的各个SQL操作就只用Qresults作为结果表名。这个方法,你只能得到一个结果表(Qresults),不管你进行了多少次查询。
 
关于Browse Results
如果你标证了Browse Results检查框,MapInfo自动以一个Browser窗口显示查询结果。
 
关于Aggregates,Function,Operator等的下拉列表(略)
SQL Select的目的是什么?
它是一个多目的的查询工具。用SQL选择,你可以完成下列任务之一或全部:
过滤你的数据,以便你只看到你感兴趣的行和列
执行关系连结,把两个或多个表组合成一个结果表
创建关系连结,(根据已有列的内容计算出新值的列)
按数据值或(和)字母顺序排序你的数据
小计你的数据,以便你只看到一个小计表,而不是整表

共2页: 上一页 1 [2] 下一页

上一篇:MapInfo重点难点讲解-SQL查询二   下一篇:江苏海事局(长江段)GIS系统启用



用户名: 新注册) 密码: 匿名评论 [所有评论]
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。