⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapinfo重点及难点讲解1.htm

📁 关于mapinfo的介绍
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      <P align=justify><FONT color=#000000>Williamette 1980人口,1990人口 478002 
      James Foster</FONT></P>
      <P align=justify><FONT color=#000000>Mason 1980人口,1990人口 478003 Wick 
      mason</FONT></P>
      <P align=justify><FONT color=#000000> </FONT></P>
      <P align=justify></FONT><FONT face=宋体 color=#000000>Counties</FONT><FONT 
      color=#000000><FONT face=宋体 size=3>表</FONT><FONT face=宋体> Order表 
      </FONT></FONT><FONT face=宋体 size=3></P>
      <P align=justify><FONT color=#000000> </FONT></P>
      <P align=justify></FONT><FONT face=宋体><FONT color=#000000>在SQL Select 
      对话框中,你用Where Condition区告诉MapInfo如何联接这两个表。在这个区内填写如下:</FONT></P>
      <P align=justify><FONT color=#000000>Select Columns: *</FONT></P>
      <P align=justify><FONT color=#000000>Frome Table: 
Counties,Order</FONT></P>
      <P align=justify><FONT color=#000000>Where Condition: 
      Counties.Countyname=Order.county</FONT></P>
      <P align=justify><FONT color=#000000>表名(在From 
      Tables区)的顺序是重要的。如果两个表都含有Map对象,结果表将只含有排列在From 
      Tables区中第一个表的Map对象。另外,当查询完成时,MapInfo会自动选择列在From 
      Tables区第一个表的部分或全部行。这样,在前例中,MapInfo会选择Counties表的部分或全部行。其结果也会包括从Orders表中拷贝来的数据,但Orders表本身不会被选择。</FONT></P>
      <P align=justify><FONT color=#000000>在Where Condition区中,列的顺序必须与From 
      Tables区中表的顺序相匹配。在上例中,From Tables区把Counties表放到了Qoders表之前,因此,Where 
      Condition区必须把Counties.CountiName列放在Orders.County列之前。如果颠倒这两个表在From 
      Tables区内的顺序,你也必须颠倒在Where Contition区内列名的顺序。</FONT></P>
      <P align=justify><FONT 
      color=#000000>当你联接两个表时,结果表的行数取决两个匹配的好坏。假定你有一个10000行的Order表,要把这个Order表与有50行的States表联接。结果表可能有10000行之多。但是如果Orders表中的某些行没有与States表中的行相匹配。结果表就会少于10000行。因此,如果Orders表中有400行无state名(或许由于数据输入错误),并且如果这个关联是依赖State名,结果表就可能只有9600个行了。</FONT></P>
      <P align=justify><FONT color=#000000>当SQL 
      Select对话框联接两个表时,你指定的如何联接这两个表的子句(Clause(s))必须放在Where 
      Condition区内的其它子名之前。</FONT></P>
      <P align=justify><FONT color=#000000>你可以用Update Column来修改SQL 
      Select多表联接的结果表。当你要更新一个表中带有另一个表的信息的一个列时,你可以:</FONT></P>
      <OL>
        <LI><FONT color=#000000>用SQL Select联接这两个表。</FONT> 
        <LI><FONT color=#000000>针对Selection表使用Update Column。</FONT> </LI></OL>
      <BLOCKQUOTE>
        <P align=justify><FONT 
      color=#000000>更新会自动影响到相应的基础表。</FONT></P></BLOCKQUOTE>
      <P align=justify><FONT color=#000000>(4)次选择(Subselects)</FONT></P>
      <P align=justify><FONT color=#000000>MapInfo允许SQL Select中的再次选择。再选择是放在SQL 
      Select对话框Where 
      Condition区内里面的一个选择语句。MapInfo首先处理Subselects,然后用这个Subselects的结果去处理主要的SQL 
      Select。</FONT></P>
      <P align=justify><FONT 
      color=#000000>例如,假定你要选出1990年人口大于全国各州平均值的全部州。换句话说,如果平均州人口是5百万,你要选出所有平均人口大于5百万的州。在实行中,你要在Where 
      Condition区中使用如下的过滤标准:</FONT></P>
      <P align=justify><FONT color=#000000>Pop_1990&gt;平均人口</FONT></P>
      <P align=justify><FONT 
      color=#000000>然而,你并不知道那平均值是多少。但是,你知道MapInfo能够用如下集合表达式计算出那个平均值:</FONT></P>
      <P align=justify><FONT color=#000000>Avg(Pop_199)</FONT></P>
      <P align=justify><FONT color=#000000>为了计算平均州人口,要在Where 
      Condition区输入一个再选择(Subselect)。Where 
      Condition区那时能够比较对Pop_1990列再选择的结果。要进行那样一种查询,如下填写SQL Select对话框。</FONT></P>
      <P align=justify><FONT color=#000000>Select Columns: *</FONT></P>
      <P align=justify><FONT color=#000000>From Table: States</FONT></P>
      <P align=justify><FONT color=#000000>Where Condition: Pop_1990&gt;(Sekect 
      Avg(Pop_1990) From States)</FONT></P>
      <P align=justify><FONT color=#000000>再选择是在Where 
      Condition区内,在&gt;操作符之后。再选择必须用园括号括起来。</FONT></P>
      <P align=justify><FONT 
      color=#000000>最有用的再选择包括一个Select子句,一个from子句和一个Where子句,象下面这样:</FONT></P>
      <P align=justify><FONT 
      color=#000000>Select某些列from某些表where某些条件存在。</FONT></P>
      <P align=justify><FONT color=#000000>考虑如下的SQL 
      Select,它选择各州中人口大于4000000的全部城市:</FONT></P>
      <P align=justify><FONT color=#000000>Select Columns: *</FONT></P>
      <P align=justify><FONT color=#000000>From table: cities</FONT></P>
      <BLOCKQUOTE>
        <BLOCKQUOTE>
          <BLOCKQUOTE>
            <BLOCKQUOTE>
              <BLOCKQUOTE>
                <BLOCKQUOTE>
                  <BLOCKQUOTE>
                    <P align=justify><FONT color=#000000>Where Condition: obj 
                    within any(Select obj from states where 
                    Pop_1990&gt;4000000)</FONT></P></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE>
      <P align=justify><FONT 
      color=#000000>再选择返回代表1990年人口大于400000的全部州的地理对象。然后主选择语句设到被再选择选中了的州内全部城市。注意:主选择语句用了一个地理操作符(Within)来做这个事情。</FONT></P>
      <P align=justify><FONT 
      color=#000000>虽然前一查询用两个表,States表和Cities表,但Cities是出现From 
      Tables区的仅有的表。这是因为在再选择中使用了States。如果一个表仅仅是被用于再选择内,那么这个表的表名不需要出现在From 
      Tables区中。</FONT></P>
      <P align=justify><FONT 
      color=#000000>在下一个例子中,我们选择与田西纳州相交的所有州,换言之,所有相邻的州。</FONT></P>
      <P align=justify><FONT color=#000000>Select columns: *</FONT></P>
      <P align=justify><FONT color=#000000>From tables: states</FONT></P>
      <P align=justify><FONT color=#000000>Where conditions: obj 
      Intersects(select obj from states where </FONT></P>
      <BLOCKQUOTE>
        <BLOCKQUOTE>
          <BLOCKQUOTE>
            <BLOCKQUOTE>
              <BLOCKQUOTE>
                <BLOCKQUOTE>
                  <P align=justify></FONT><FONT face=宋体 
                  color=#000000>state=</FONT><FONT color=#000000>”<FONT 
                  face=宋体>TN</FONT>”</FONT></P></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE>
      <P><FONT face=宋体><FONT color=#000000> </FONT></P>
      <P align=justify><FONT color=#000000>首先,MapInfo执行再选择:</FONT></P>
      <P align=justify></FONT><FONT face=宋体 color=#000000>Selectobj from states 
      where state=</FONT><FONT color=#000000>”<FONT 
face=宋体>TN</FONT>”</FONT></P>
      <P><FONT face=宋体><FONT color=#000000> </FONT></P>
      <P align=justify><FONT color=#000000>再选择找到了代表田纳西州的图形对象。然后主Where 
      condition找到了States表中与代表田纳西州的图形相交的全部对象。你可以用类似的查询选择与某给定街道相交的全部街道。</FONT></P>
      <P align=justify><FONT color=#000000>现考虑这个例子:</FONT></P>
      <P align=justify><FONT color=#000000>Select columns: *</FONT></P>
      <P align=justify><FONT color=#000000>From Tables: County</FONT></P>
      <P align=justify><FONT color=#000000>Where Condition: County.obj contains 
      any(select obj from dealers)</FONT></P>
      <P align=justify><FONT color=#000000>这个查询找到含有销售商的所有县。主Where 
      condition有这样的一个形式:</FONT></P>
      <P align=justify><FONT color=#000000>一个县对象Contains一个经销商对象。</FONT></P>
      <P align=justify><FONT color=#000000>经销商对象组是由再选择:Select obj from 
      dealers产生的。MapInfo选择代表含有经销商的各个县对象的行。</FONT></P>
      <P align=justify><FONT color=#000000>最后,对于再选择有几点注意事项:</FONT></P>
      <UL>
        <LI><FONT color=#000000>在再选择中你可以使用在From 
        Table区中未列出的表.但是你必须把这些表列在你的再选择的From子句中(如前面例子所示那样)。</FONT> 
        <LI></FONT><FONT color=#000000><FONT face=宋体>当再选择带有关键字</FONT>”<FONT 
        face=宋体>any</FONT>”<FONT face=宋体>或</FONT>”<FONT 
        face=宋体>all</FONT>”</FONT><FONT face=宋体 
        color=#000000>时,再选择必须并且只能返回一个列。下面的句例是无效的,因为它试图返回两个列(State_name 
        和Pop_1990):</FONT><FONT face=宋体> </LI></UL>
      <BLOCKQUOTE>
        <BLOCKQUOTE>
          <P align=justify><FONT color=#000000>Any(Select state_name,pop_1990 
          from state)</FONT></P></BLOCKQUOTE></BLOCKQUOTE>
      <UL>
        <LI></FONT><FONT color=#000000><FONT face=宋体>当再选择不带</FONT>”<FONT 
        face=宋体>any</FONT>”</FONT><FONT face=宋体 
        color=#000000>、“all”或“in”时,再选择必须准确返回一个行的值。下面的例子是无效的,因为再选择返回了一组行:</FONT><FONT 
        face=宋体> </LI></UL>
      <BLOCKQUOTE>
        <BLOCKQUOTE>
          <P align=justify><FONT color=#000000>obj within(Select obj from state 
          where Pop_1990&gt;2000000)</FONT></P></BLOCKQUOTE></BLOCKQUOTE>
      <UL>
        <LI></FONT><FONT color=#000000><FONT face=宋体>当再选择不用</FONT>”<FONT 
        face=宋体>any</FONT>”</FONT><FONT face=宋体 
        color=#000000>、“all”或“in”时,你不能在再选择中使用Group by Columns子句。</FONT><FONT 
        face=宋体> 
        <LI><FONT color=#000000>你不能有嵌套的再选择,即是说,每个Select语句你只能有一个再选择。</FONT> 
      </LI></UL>
      <BLOCKQUOTE>
        <P align=justify><FONT color=#000000>设置过滤标准</FONT></P>
        <P align=justify><FONT 
        color=#000000>一个过滤标准是一个逻辑表达式,它通常把一个列值与某个另外的值作比较。例如,以下的过滤标准用大于操作符(&gt;)测试订单金额列是否有大于100的值。</FONT></P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -