今天在MapReduce的练习中看到了一个题目:

file:

CHILD      PARENT
---------- ----------
tom lucy
tom jack
jone lucy
jone jack
lucy mary
lucy ben
jack alice
jack jesse
terry alice
terry jesse
philip terry
philip alma
mark terry
mark alma

输出结果要求:

GRANDCHILD GRANDPARENT
---------- -----------
jone mary
jone ben
jone alice
jone jesse
mark alice
mark jesse
philip alice
philip jesse
tom mary
tom ben
tom alice
tom jesse

我在思考,这个如果是DB2的一个表,应该能通过表连接来实现这个要求。于是生成表parent:

[db2inst1@win ~]$ db2 "select * from parent"

CHILD      PARENT
---------- ----------
tom lucy
tom jack
jone lucy
jone jack
lucy mary
lucy ben
jack alice
jack jesse
terry alice
terry jesse
philip terry
philip alma
mark terry
mark alma 14 record(s) selected.

要达到这样的结果,一定要用到表的hash join。下面是我的SQL实现:

[db2inst1@win ~]$ db2 "select u.child GRANDCHILD, b.parent GRANDPARENT from (select * from parent where parent in (select child from parent)) as u ,(select * from parent where child in (select parent from parent)) as b where u.parent=b.child order by u.child"

DB2的优化器重写成这样:

Optimized Statement:
-------------------
SELECT
DISTINCT Q1.CHILD AS "GRANDCHILD",
Q3.PARENT AS "GRANDPARENT",
Q3.CHILD,
Q1.PARENT
FROM
DB2INST1.PARENT AS Q1,
DB2INST1.PARENT AS Q2,
DB2INST1.PARENT AS Q3,
DB2INST1.PARENT AS Q4
WHERE
(Q1.PARENT = Q2.CHILD) AND
(Q2.CHILD = Q4.PARENT) AND
(Q2.CHILD = Q3.CHILD)
ORDER BY
Q1.CHILD

关于SQL要怎么优化这一方面还有很多不足。。。

db2 表关联查询的更多相关文章

  1. MSSQL N张表关联查询

    declare @newTime varchar(50); declare @lasetTime varchar(50); set @newTime= getdate(); set @lasetTim ...

  2. RDIFramework.NET 中多表关联查询分页实例

    RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为 ...

  3. 图解SQL多表关联查询

      图解SQL多表关联查询     网上看了篇文章关于多表连接的,感觉很好,记录下来,以便日后自己学习  内连接     左连接     右连接       全外连接   1. 查两表关联列相等的数据 ...

  4. Oracle 数据库(oracle Database)Select 多表关联查询方式

    Oracle数据库中Select语句语法及介绍 SELECT [ ALL | DISTINCT ] <字段表达式1[,<字段表达式2[,…] FROM <表名1>,<表名 ...

  5. ORACLE数据库多表关联查询效率问题解决方案

    最近在做项目中遇到多表关联查询排序的效率问题(5张以上40W+数据的表),查询一次大概要20多秒,经过一番苦思冥想,处理方案如下: 1.软件设计初期,需要一对一关联的表应该设计在一张大表里,这样虽然字 ...

  6. mongodb操作之使用javaScript实现多表关联查询

    一.数据控制 mongodb操作数据量控制,千万控制好,不要因为操作的数据量过多而导致失败. 演示一下发生此类错误的错误提示:

  7. ofbiz学习笔记01--多表关联查询

    不管做什么项目,肯定会用到多表关联查询数据,从网络查询得知ofbiz有三种多表关联查询方法 实现一:Screem.xml 中的 section 里,加 <action>, 加 get-re ...

  8. JAVA入门[9]-mybatis多表关联查询

    概要 本节要实现的是多表关联查询的简单demo.场景是根据id查询某商品分类信息,并展示该分类下的商品列表. 一.Mysql测试数据 新建表Category(商品分类)和Product(商品),并插入 ...

  9. MyBatis 多表关联查询

    多表关联查询 一对多 单条SQL实现. //根据部门编号查询出部门和部门成员姓名public dept selectAll() thorws Excatipon; //接口的抽象方法 下面是对应接口的 ...

随机推荐

  1. Linux 压缩 与解压命令

    tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName gz命令 解压1:gunzip FileName.gz 解压2:gzip ...

  2. usaco training 4.1.3 fence6 题解

    Fence Loops题解 The fences that surround Farmer Brown's collection of pastures have gotten out of cont ...

  3. View学习(三)- View的布局(layout)过程

    前段开始学习View的工作原理,前两篇博客的草稿都已经写好了,本想一鼓作气写完所有的相关文章,然后经历了一段连续加班,结果今天准备继续写文章时,把之前写好的东西都忘记了,又重新梳理了一遍,所以说那怕就 ...

  4. mysql表生成JavaBean

    MySQLToBean.java package org.just.util; import java.io.File; import java.io.FileInputStream; import ...

  5. Mifare l卡特性简介

    电气特性 l         容量为8K位EEPrOM l         分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位 l         每个扇区有独立的一组密码及访问控制 l  ...

  6. jmeter-Java关于MD5加密方法 以及16位32位互转

    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现.将 ...

  7. 深入浅析JavaScript中的constructor

    constructor 属性返回对创建此对象的数组函数的引用.本文给大家介绍JavaScript中的constructor ,需要的朋友参考下吧 定义和用法 constructor 属性返回对创建此对 ...

  8. 教你做一个单机版人事管理系统(Winform版)treeview与listview使用详情

    ------------------------------------------------------------------部门部分------------------------------ ...

  9. 【YII】Yii入门

    1. 入门博客 http://blog.csdn.net/zm2714/article/category/1359776/2 2. 创建运行demo http://blog.csdn.net/zhou ...

  10. Docker网络——单host网络

    前言 前面总结了Docker基础以及Docker存储相关知识,今天来总结一下Docker单主机网络的相关知识.毋庸置疑,网络绝对是任何系统的核心,他在Docker中也占有重要的作用.同样本文基于Clo ...