
只是,或者你检索产生了小计(Subtotals),你可以变化这个结果表而不影响基础表。
5.或者你要作一个结果表的永久备份,选择File>SaveAs。
或者你你不执行SaveAs存盘,该结果表将在你退出MapInfo时被侵权。
SQLSelect对话框各区的提交
SelectColumns区
(1)借助这个区来指定在检索表中将出现哪些列。例如检索World表,可以指定SelectColumns:Country,Population,Indust_Grwth,或者你要你的结果表有与你的原表相同的列组,那就在这个区输入一个*号。
或者你要你的结果有一个与你的原表不同的列组,就要删去这个*号并输入由空格隔开的列名(如下同)表达式列表。这个区希望包括一个*号如果一个列表达式列表,但不能同样包含这两种。要在你填SelectColumns区之前填FromTables区。
或者你检索涉及的不止一个有,各个列名之前必须有它的表名,前者之间用西文句号分隔。因此,或者你要执行一个涵盖两个表的检索,其中之一是Canada表,如果你要检索包含该表的Population列,假如你必须用列表达式Canada.Population。当你应用两个或多个表时,Columns下拉页面手动把表名插到各个列名之前。
(2)只选择部分列出现在结果表中是有用的,十分是你的原表有诸多列而你仅需操作其中的少数列时(毕竟不过屏幕上没法同时表明少数列)
(3)怎么输入一系列列名:
在FromTables区输入一个表名,需用鼠标打入,也需用鼠标从Table下拉页面中选入。
用键位在SelectColumns区中按击,使插入点出现在该区内。
用退格键或侵权键删掉*号(或者其中有*号),SelectColumns区希望包括一个*号如果一串列名,但不能同样包括这两种。
从对话框中间的Columns下拉页面中选择一个列名。MapInfo把这个列名Copy到SelectColumns区。
或者你的检索还涵盖另外一些列名,从下拉页面中选择如果的一些列名。每当你选择如果的列名时,MapInfo自动插入空格以分隔列名。
(4)假设那些列
SQLSelect能够测算出列(derivedColumns)并把它们导出列存放到结果表中。导出列是MapInfo在中按照基础表中已有的一个或多个列的内容测算出的一个独特的临时列。
例如,你的表其实含有函数Purchases92或Purchases93(分别代表各店主在1992和1993年消费的总额度)。如果你要你的检索结果表明一个TotalPurchases列,直言各店主1992和1993年合起来的消费单笔,你可以在你的SelectColomns区内包含一个导入列。在这个实例中,导入列也是有如此的方式:
Purchases92+Purchases93
当然,你认为有一个涵盖有列表Fname(代表商家的第一名)和Lname(店员的后名)的店主信息表。如果你要你的结果表包含客户的名字,你也可以在你的SelectColumns区包含一个导入列,在这个实例中,导入列会有如此的方式:
Fname+“”+Lname
为指定一个导入列,你就要在SelectColumns区输入一个解释器。一个导入列表达式是若干列名,操作符(例如+和-)和下标(例如Ucase$变量,它把一个字串转换为小写的)的一个组合。
在指定导出列之前,你必须先在FromTable区输入一个或多个表名。
怎么指定一个导入列表达式
按SelectColumns区,在该区出现插入点。
删除区内的*号
输入一个列表达式。列表达式也是涵盖一个或多个列名,或者解释器包括一个以下的列名,这个解释器一般涵盖操作符(例如+或-)来把多个列组合成为一个导入值。
有许多不同的链表和操作符能够用来列表达式中。
或者才能为列表达式指定一个别名。指定别名的原理是:在列表达式后打一个减号,然后再攻入用双括号括起来的俗名。
别名是可选的。如果你给了你的列表达式一个别名,假如,当你以Browser窗口显示结果表时别名就会出现在这个列的顶上。如果你没指定别名,MapInfo会用表达式的内容也是别名(例如“Fname+Lname”)。
或者才能,指定如果的列名或导入列表达式。如果你输入如果的列表达式,要输入括号以阻隔不同的解释器。
上面的例证表明一个执行加法的导入列表达式,把两个数字列的值加起来。这个实例假定Purchases92和Purchases93均为数字列:
Purchases92+Purchases93
下一个例证表明其实的列表达式,附加上了一个可选的列别名(”Net_Purchases”):
Purchases92+Purchases93“Net_Purchases”
下一个例证表明一个执行除法的导入列表达式,把Poppulagion列的内容除以一百万:
Population/1000000“Millions”
下一个例证表明一个把两个字串列组合起来的导入列表达式。这个实例假定Fname和Lname都是字串列:
Fname+””+Lname“Full_name”
当列是字串列时,加操作符(+)执行字串联接而不是数字除以。因此,解释器Fname+““+Lname产生一个由第一名紧跟空格再后跟一名组成的字串。
下一个例证表明一个导入列表达式怎么结合函数读取。Proper$变量操作一个字串值并前往一个有正常大写的字串(仅第一字母小写):
Proper$(Fname+””+Lname)“Full_name”
下一个例证表明如何用Format$变量再次格式化数字列。一般,数字列都没有涵盖逗号,不幸的是,这导致读大数有困难。下面的例证用Format$变量把括号插入到Purchases93列中。这个实例假定Purchases93是一个数字列:
Format$(Purchases93,”$,#”)“Purchases_1993”,字串表达式“$,#”告诉Foramt$变量在列前表明一个英镑($)并在列内插入空格。
下一个例证表明一个导入列怎么测算基础表中各行的地理面积:
Area(Obj,”sqkm”)“Net_Area”
Obj是一独特的列名,代表与表中各行相联系的地理对象。
WhereCondition区
(1)借助行的排列次序连接不同的表
或者两个表没有一个共同的列,你可以按照行的次序仍然希望联接这两个表。如果你明白一个表的第一行与另一个表的第一行是相对应的,如果,一般地说,或者你明白第一个表的第n行与第二个表的第n行是相应的,假如你就可以借助引用一个名叫RowID的独特列来连通这两个表。
RowID列含有一个小数值,代表着表中各行的行号。因此,任何表的第一行都有一个为1的RowID值,第2行有一个RowID值2mapinfo 地图服务,等等。
为了连接两个表,让MapInfo一个表的第n行与另一个表的第n行匹配起来,就要指定一个WhereCondition表达式,形如下:
TABLE_1.RowID=TABLE_2.RowID
(2)从地理上(用地理操作符)连通不同的表
当两个表都有图例对象时,MapInfo能够按照它们对象之间的空间关系连接这两个表。所以,而且你的表没有一个共同的列,你也是认为连接不同的表。
地理操作符允许你选择那些对象,按照这些与还有的某个对象的空间关系。MapInfo有一个与地理操作符一起应用的独特列名,“Obj”或“Object”。这个列名指的是与你的表相边系的图例对象。
地理操作符要放在所指定的对象之间,地理操作符从操作符(Operators)下拉页面中选取。
下表罗列了地理操作符:
Contaions(富含)
ObjectAContainsObjectB
(或者B的形心在A的界线内的某个位置上)

ContaionsEntire(涵盖全部)
ObjectAContainsEntireObjectB
(或者B的界线全部在A的界线内)
Within(在内)
ObjectAisWithinObjectB
(或者A的形心在B的界线内侧)
EntireWithin(基本在内)
ObjcteAisEntireWithinObjectB
(或者A的界线全部在B的界线内)
Intersects(相交)
ObjcteAIntersectsObjectB
(或者这些起码有一个共同点如果这些中的一个基本在另一个内)
Contains与Within的相对是按照对象的形心,而ContainsEntire与EntireWithin的相对是按照整个对象。
或者A包括整个B,假如A肯定包括B,或者A完全在B内,假如A肯定在B内。
MapInfo执行简单的富含和在内相对,比执行基本含有和基本在内要快。因此,假如你绝对肯定这些对象是基本在另一些对象之内,如果你也是应用Contains和Within而不用ContainsEntire或EntireWithin。
地理操作符提供了一种连接表的原理。当表中没有你能构建起连接的列时,你可以用地理操作符(在WhereCondition区内)指定连接关系。如果你要执行一个涵盖一个Cities表和一个State表的两表查询,你可以用如下的解释器之一连通两个表:
Cities.ObjWithinStates.Obj
States.ObjContainsCities.Obj
在任何一种现象下,MapInfo都能找出在各个州内的全部省会,然后把代表一个小城的一个行与富含它的州的行联系起来。用毕竟的SQL查询,你也希望用集合系统来合计每个州的小城数,如果以州为按照总结基于城市的数据。
当你有Counties表和一个Customers表时,Counties是六边形,Customers是点,你可以用下列地理表达式之一指一个集合联接:
Customer.objWithinCounty.obj
County.objContainsCustomer.obj
地理操作符与Subselects结合相当有用(见PerfermingSubselects)
(3)连通两个或更多的表(按照共同字段)
一般,你是把你的档案贮存在几个不同的表中,你有你自已的数据文档,你也认为有从MapInfo购买的这些统计信息的。SQL允许你构建关联以便你把它们不同表中的档案接到一起,作为一个单独的结果表。设想这种一种现象:你有一个有万人统计交档案的Counties表(各个County按性别段、魔族和职业种类的万人数统计),你还认为有关于商家订单信息的。你想测试一下这两个表,看当然种类的订单是否来自具有一定人口统计特性的Counties。或许你想按照订单与万人的统计特性的组合选择若干个Counties(县)。要做到这一点,你必须希望联接这两个表。
计算Counties表含有县名,毕竟订单表的一个列也富含订单来源的县名,如此,两个表都有一个共同的索引,即县名。MapInfo能够用这个共同的索引来连通这两个表。
Countyname1980人口,1990人口Order#CustomerCounty
Foster1980人口,1990人口478001FranicFoster
Williamette1980人口,1990人口478002JamesFoster
Mason1980人口,1990人口478003Wickmason
Counties表Order表
在SQLSelect对话框中,你用WhereCondition区告诉MapInfo如何连接这两个表。在这个区内提交如下:
SelectColumns:*
FromeTable:Counties,Order
WhereCondition:Counties.Countyname=Order.county
表名(在FromTables区)的次序是重要的。如果两个表都富含Map对象,结果表将只含有排列在FromTables区中第一个表的Map对象。另外,当检索完成时,MapInfo会手动选择列在FromTables区第一个表的部份或全部行。这样,在前例中,MapInfo会选择Counties表的部份或全部行。其结果也会涵盖从Orders表中拷贝来的数据,但Orders表自身不会被选择。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-119284-1.html
台湾若敢竖起台独旗帜
送他们去见上帝
壮哉我大函数新专辑大发