zoukankan      html  css  js  c++  java
  • 外部连接

    左连接 (left join),又称内部连接 (inner join)。在这个情况下,要两个表格内都有同样的值,那一笔资料才会被选出。那如果我们想要列出一个表格中每一笔的资料,无论它的值在另一个表格中有没有出现,那该怎么办呢?在这个时候,我们就需要用到 SQL OUTER JOIN (外部连接) 的指令。

    外部连接的语法是依数据库的不同而有所不同的。举例来说,在 Oracle 上,我们会在 WHERE 子句中要选出所有资料的那个表格之后加上一个 "(+)" 来代表说这个表格中的所有资料我们都要。

    假设我们有以下的两个表格:

    
    

    Store_Information 表格

    
    
    Store_Name Sales Txn_Date
    Los Angeles 1500 05-Jan-1999
    San Diego 250 07-Jan-1999
    Los Angeles 300 08-Jan-1999
    Boston 700 08-Jan-1999
    
    

    Geography 表格

    
    
    Region_Name Store_Name
    East Boston
    East New York
    West Los Angeles
    West San Diego
     

    我们需要知道每一间店的营业额。如果我们用一个普通的连接,我们将会漏失掉 'New York' 这个店,因为它并不存在于 Store_Information 这个表格。所以,在这个情况下,我们需要用外部连接来串联这两个表格:

    SELECT A1.Store_Name, SUM(A2.Sales) SALES
    FROM Georgraphy A1, Store_Information A2
    WHERE A1.Store_Name = A2.Store_Name (+)
    GROUP BY A1.Store_Name;

    我们在这里是使用了 Oracle 的外部连接语法。

    结果:

    Store_Name    SALES
    Boston    700
    New York    
    Los Angeles    1800
    San Diego    250

    请注意: 当第二个表格没有相对的资料时,SQL 会传回 NULL 值。在这一个例子中,'New York' 并不存在于 Store_Information 表格,所以它的 "SALES" 栏位是 NULL。

  • 相关阅读:
    OpenJudge 2721 忽略大小写比较字符串大小
    Poj 2586 / OpenJudge 2586 Y2K Accounting Bug
    Poj 2109 / OpenJudge 2109 Power of Cryptography
    Poj 1328 / OpenJudge 1328 Radar Installation
    Poj 2965 The Pilots Brothers' refrigerator
    Poj 2503 / OpenJudge 2503 Babelfish
    Poj 2388 Who's in the Middle
    模板:cin.getline用法
    Poj 3094 Quicksum
    Charles-Mac安装、配置及苹果手机安装证书
  • 原文地址:https://www.cnblogs.com/h-c-g/p/15029067.html
Copyright © 2011-2022 走看看