CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

两表连接的问题!急!

楼主salaciouswolf(好好学习)2005-06-01 22:31:32 在 MS-SQL Server / 基础类 提问

如下例:  
   
  表table1:  
   
  col1     col2     col3  
  1             2           aaa  
  1             3           bbb  
  1             4           ccc  
  2             1           ddd  
   
  表table2:  
   
  col1     col2       col4  
  1             2           xxx  
  2             1           yyy  
  3             1           zzz  
  2             3           www  
   
  现在我想根据col1和col2来连接两个表,   因为两表中的col1,col2定义是一样的,所以希望连接后的表中既包含table1,   table2中col1和col2相等的行,也要包含两表中不相等的行,结果应如下:  
  col1     col2     col3     col4  
  1             2           aaa       xxx  
  2             1           ddd       yyy                             (前两列是inner   join的结果)  
  1             3           bbb       NULL  
  1             4           ccc       NULL                            
  3             1           NULL     zzz  
  2             3           NULL     www                               (后面的是outer   join的结果)  
   
  请各位大虾帮帮忙,   多谢了! 问题点数:30、回复次数:7Top

1 楼duanduan1122(俺村俺帅!!!)回复于 2005-06-01 23:35:59 得分 30

select   t1.col1,t1.col2,t1.col3,t2.col4  
  from   table1   t1   full   join   table2   t2  
  on   t1.col1=t2.col2   and   t1.col2=t2.col2Top

2 楼duanduan1122(俺村俺帅!!!)回复于 2005-06-01 23:41:15 得分 0

使用完整外部联接  
  若要通过在联接结果中包括不匹配的行保留不匹配信息,请使用完整外部联接。Microsoft®   SQL   Server™   2000   提供完整外部联接运算符   FULL   OUTER   JOIN,不管另一个表是否有匹配的值,此运算符都包括两个表中的所有行。  
   
  假设在   city   列上联接   authors   表和   publishers   表。结果只显示在出版商所在城市居住的作者(本例中为   Abraham   Bennet   和   Cheryl   Carson)。SQL-92   FULL   OUTER   JOIN   运算符指明:不管表中是否有匹配的数据,结果将包括两个表中的所有行。  
   
  若要在结果中包括所有作者和出版商,而不管城市中是否有出版商或者出版商是否住在同一个城市,请使用完整外部联接。下面是   Transact-SQL   完整外部联接的查询和结果:  
   
  USE   pubs  
  SELECT   a.au_fname,   a.au_lname,   p.pub_name  
  FROM   authors   a   FULL   OUTER   JOIN   publishers   p  
        ON   a.city   =   p.city  
  ORDER   BY   p.pub_name   ASC,   a.au_lname   ASC,   a.au_fname   ASC  
   
  下面是结果集:  
   
  au_fname                           au_lname                                           pub_name                            
  --------------------   ----------------------------   --------------------    
  Reginald                           Blotchet-Halls                               NULL  
  Michel                               DeFrance                                           NULL  
  Innes                                 del   Castillo                                   NULL  
  Ann                                     Dull                                                   NULL  
  Marjorie                           Green                                                 NULL  
  Morningstar                     Greene                                               NULL  
  Burt                                   Gringlesby                                       NULL  
  Sheryl                               Hunter                                               NULL  
  Livia                                 Karsen                                               NULL  
  Charlene                           Locksley                                           NULL  
  Stearns                             MacFeather                                       NULL  
  Heather                             McBadden                                           NULL  
  Michael                             O'Leary                                             NULL  
  Sylvia                               Panteley                                           NULL  
  Albert                               Ringer                                               NULL  
  Anne                                   Ringer                                               NULL  
  Meander                             Smith                                                 NULL  
  Dean                                   Straight                                           NULL  
  Dirk                                   Stringer                                           NULL  
  Johnson                             White                                                 NULL  
  Akiko                                 Yokomoto                                           NULL  
  Abraham                             Bennet                                               Algodata   Infosystems  
  Cheryl                               Carson                                               Algodata   Infosystems  
  NULL                                   NULL                                                   Binnet   &   Hardley  
  NULL                                   NULL                                                   Five   Lakes   Publishing  
  NULL                                   NULL                                                   GGG&G  
  NULL                                   NULL                                                   Lucerne   Publishing  
  NULL                                   NULL                                                   New   Moon   Books  
  NULL                                   NULL                                                   Ramona   Publishers  
  NULL                                   NULL                                                   Scootney   Books  
   
  (30   row(s)   affected)  
   
  Top

3 楼echoxue(咱当过兵的人)回复于 2005-06-01 23:41:43 得分 0

upTop

4 楼xiaonvjing(飞扬)回复于 2005-06-02 05:19:55 得分 0

我想请问一下duanduan1122(我要做老大):  
  你能详细说一下左外连接和右外连接的区别吗?  
  先谢谢啦  
  Top

5 楼yifan600(一剑飘雪)回复于 2005-06-02 08:14:45 得分 0

使用左向外联接  
  假设在   city   列上联接   authors   表和   publishers   表。结果只显示在出版商所在城市居住的作者(本例中为   Abraham   Bennet   和   Cheryl   Carson)。  
   
  若要在结果中包括所有的作者,而不管出版商是否住在同一个城市,请使用   SQL-92   左向外联接。下面是   Transact-SQL   左向外联接的查询和结果:  
   
  USE   pubs  
  SELECT   a.au_fname,   a.au_lname,   p.pub_name  
  FROM   authors   a   LEFT   OUTER   JOIN   publishers   p  
        ON   a.city   =   p.city  
  ORDER   BY   p.pub_name   ASC,   a.au_lname   ASC,   a.au_fname   ASC  
   
  下面是结果集:  
   
  au_fname                           au_lname                                               pub_name                      
  --------------------   ------------------------------   -----------------    
  Reginald                           Blotchet-Halls                                   NULL  
  Michel                               DeFrance                                               NULL  
  Innes                                 del   Castillo                                       NULL  
  Ann                                     Dull                                                       NULL  
  Marjorie                           Green                                                     NULL  
  Morningstar                     Greene                                                   NULL  
  Burt                                   Gringlesby                                           NULL  
  Sheryl                               Hunter                                                   NULL  
  Livia                                 Karsen                                                   NULL  
  Charlene                           Locksley                                               NULL  
  Stearns                             MacFeather                                           NULL  
  Heather                             McBadden                                               NULL  
  Michael                             O'Leary                                                 NULL  
  Sylvia                               Panteley                                               NULL  
  Albert                               Ringer                                                   NULL  
  Anne                                   Ringer                                                   NULL  
  Meander                             Smith                                                     NULL  
  Dean                                   Straight                                               NULL  
  Dirk                                   Stringer                                               NULL  
  Johnson                             White                                                     NULL  
  Akiko                                 Yokomoto                                               NULL  
  Abraham                             Bennet                                                   Algodata   Infosystems  
  Cheryl                               Carson                                                   Algodata   Infosystems  
   
  (23   row(s)   affected)  
   
  不管是否与   publishers   表中的   city   列匹配,LEFT   OUTER   JOIN   均会在结果中包含   authors   表的所有行。注意:结果中所列的大多数作者都没有相匹配的数据,因此,这些行的   pub_name   列包含空值。  
   
  使用右向外联接  
  假设在   city   列上联接   authors   表和   publishers   表。结果只显示在出版商所在城市居住的作者(本例中为   Abraham   Bennet   和   Cheryl   Carson)。SQL-92   右向外联接运算符   RIGHT   OUTER   JOIN   指明:不管第一个表中是否有匹配的数据,结果将包含第二个表中的所有行。  
   
  若要在结果中包括所有的出版商,而不管城市中是否还有出版商居住,请使用   SQL-92   右向外联接。下面是   Transact-SQL   右向外联接的查询和结果:  
   
  USE   pubs  
  SELECT   a.au_fname,   a.au_lname,   p.pub_name  
  FROM   authors   AS   a   RIGHT   OUTER   JOIN   publishers   AS   p  
        ON   a.city   =   p.city  
  ORDER   BY   p.pub_name   ASC,   a.au_lname   ASC,   a.au_fname   ASC  
   
  下面是结果集:  
   
  au_fname                           au_lname                                   pub_name                            
  --------------------   ------------------------   --------------------    
  Abraham                             Bennet                                       Algodata   Infosystems  
  Cheryl                               Carson                                       Algodata   Infosystems  
  NULL                                   NULL                                           Binnet   &   Hardley  
  NULL                                   NULL                                           Five   Lakes   Publishing  
  NULL                                   NULL                                           GGG&G  
  NULL                                   NULL                                           Lucerne   Publishing  
  NULL                                   NULL                                           New   Moon   Books  
  NULL                                   NULL                                           Ramona   Publishers  
  NULL                                   NULL                                           Scootney   Books  
   
  (9   row(s)   affected)  
   
  使用谓词(如将联接与常量比较)可以进一步限制外联接。下例包含相同的右向外联接,但消除销售量低于   50   本的书籍的书名:  
   
  USE   pubs  
  SELECT   s.stor_id,   s.qty,   t.title  
  FROM   sales   s   RIGHT   OUTER   JOIN   titles   t  
        ON   s.title_id   =   t.title_id  
        AND   s.qty   >   50  
  ORDER   BY   s.stor_id   ASC  
   
  下面是结果集:  
   
  stor_id   qty         title                                                                                                            
  -------   ------   ---------------------------------------------------------    
  (null)   (null)   But   Is   It   User   Friendly?                                                                        
  (null)   (null)   Computer   Phobic   AND   Non-Phobic   Individuals:   Behavior    
                          Variations                                      
  (null)   (null)   Cooking   with   Computers:   Surreptitious   Balance   Sheets                
  (null)   (null)   Emotional   Security:   A   New   Algorithm                                                  
  (null)   (null)   Fifty   Years   in   Buckingham   Palace   Kitchens                                      
  7066       75           Is   Anger   the   Enemy?                                                                                  
  (null)   (null)   Life   Without   Fear                                                                                      
  (null)   (null)   Net   Etiquette                                                                                              
  (null)   (null)   Onions,   Leeks,   and   Garlic:   Cooking   Secrets   of   the    
                          Mediterranean                                      
  (null)   (null)   Prolonged   Data   Deprivation:   Four   Case   Studies                              
  (null)   (null)   Secrets   of   Silicon   Valley                                                                      
  (null)   (null)   Silicon   Valley   Gastronomic   Treats                                                      
  (null)   (null)   Straight   Talk   About   Computers                                                              
  (null)   (null)   Sushi,   Anyone?                                                                                            
  (null)   (null)   The   Busy   Executive's   Database   Guide                                                  
  (null)   (null)   The   Gourmet   Microwave                                                                              
  (null)   (null)   The   Psychology   of   Computer   Cooking                                                    
  (null)   (null)   You   Can   Combat   Computer   Stress!                                                          
   
  (18   row(s)   affected)  
   
  Top

6 楼salaciouswolf(好好学习)回复于 2005-06-02 09:09:05 得分 0

TO:     duanduan1122(我要做老大!!!)    
   
  谢谢先,   你的方法有些行不通的地方,   因为在SELECT   T1.COL1,   T1.COL2时,如果第二个表中有数据在第一个表中没有匹配的,那么出来的结果中第一列和第二列会是NULLTop

7 楼xiaonvjing(飞扬)回复于 2005-06-03 08:20:02 得分 0

TO   yifan600(一剑飘雪):  
  谢谢你啦,我明白啦!!Top

相关问题

  • 两个表的连接,急急急急
  • ■■■两个表连接■■■
  • 主从表连接,急急急急
  • 两表连接问题
  • 急!VB中两个表连接问题。(Access数据库、Dao)
  • 数据窗口两个表外连接该如何写,急!!!
  • 如何用ASP连接二个表(急)
  • 连接表
  • 表连接!
  • 表表的连接!!

关键词

  • 联接
  • 表
  • au
  • col
  • 结果
  • algodata
  • nullanne
  • lname
  • 运算符
  • 出版商

得分解答快速导航

  • 帖主:salaciouswolf
  • duanduan1122

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo