zoukankan      html  css  js  c++  java
  • oracleI基础入门(6)sql语句left join Crazy

    外部连接
    之前我们看到的左连接 (left join),又称内部连接 (inner join)。在这个情况下,要两个表格
    内都有同样的值,那一笔资料才会被选出。那如果我们想要列出一个表格中每一笔的资料,
    无论它的值在另一个表格中有没有出现,那该怎么办呢?在这个时候,我们就需要用到 SQL
    OUTER JOIN (外部连接) 的指令。
    外部连接的语法是依数据库的不同而有所不同的。举例来说,在 Oracle 上,我们会在
    WHERE 子句中要选出所有资料的那个表格之后加上一个 "(+)" 来代表说这个表格中的所
    有资料我们都要。
    假设我们有以下的两个表格:
    Store_Information 表格
    store_name              Sales              Date
    Los Angeles              $1500             Jan-05-1999
    San Diego                $250               Jan-07-1999
    Los Angeles              $300               Jan-08-1999
    Boston                     $700               Jan-08-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.

  • 相关阅读:
    Java参数传递方式
    C++成员函数的 重载、隐藏、覆盖分析(转)
    回调函数 (一)
    Java之String 专题二
    从10亿个浮点数中找出最大的1万个
    【onclick事件】【改变 HTML 内容innerHTML】【图片替换】【改变标签的css】【判断输入是否是数字】
    【页面加载】【九九乘法表】【document.write的功能_】【<script>直接显示数组】【声明新变量】
    Windows10 环境下安装 ElasticSearch
    数据包和数据报有何区别?
    NIO 通道和缓冲区
  • 原文地址:https://www.cnblogs.com/flyscan/p/2534362.html
Copyright © 2011-2022 走看看