0% found this document useful (0 votes)
68 views16 pages

Union: Course Materials May Not Be Reproduced in Whole or in Part Without The Prior Written Permission of IBM

ndg

Uploaded by

Pratiwi Susanti
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
68 views16 pages

Union: Course Materials May Not Be Reproduced in Whole or in Part Without The Prior Written Permission of IBM

ndg

Uploaded by

Pratiwi Susanti
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

UNION

Copyright IBM Corporation 2007 Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

4.0.3 3.3.1

Unit Objectives
After completing this unit, you should be able to: Produce a single result table containing data from more than one query State the UNION rules State the difference between UNION and UNION ALL

Copyright IBM Corporation 2007

Multiple Queries - Multiple Reports


QUERY 1 SELECT some_columns FROM some_table(s) WHERE some_conditions QUERY 2 SELECT some_columns FROM some_table(s) WHERE some_conditions DATA FROM QUERY 1

DATA FROM QUERY 2

Copyright IBM Corporation 2007

UNIONing Queries Together - Single Report


-- QUERY 1 SELECT some_columns FROM some_table(s) WHERE some_conditions UNION ALL DATA FROM QUERY 2 -- QUERY 2 SELECT some_columns FROM some_table(s) WHERE some_conditions
Copyright IBM Corporation 2007

DATA FROM QUERY 1

Union Rule Number 1


SELECT COL_6, COL_3, COL_8, COL_14 FROM TEST_TAB_A WHERE COL_7 = 'Y' UNION ALL SELECT COL_D, COL_Y, COL_A, COL_P FROM TEST_TAB_B WHERE COL_R < 7 Every query in the stack must return the same number of columns
Copyright IBM Corporation 2007

Union Rule Number 2


SELECT COL_6, COL_3, COL_8, COL_14 FROM TEST_TAB_A WHERE COL_7 = 'Y' UNION ALL SELECT COL_D, COL_Y, COL_A, COL_P FROM TEST_TAB_B WHERE COL_R < 7 The data types of the nth column of each query in the stack must be compatible
Copyright IBM Corporation 2007

Union Rule Number 3


SELECT COL_6, COL_3, COL_8 AS C3 FROM TEST_TAB_A WHERE COL_7 = 'Y' UNION ALL SELECT COL_D, COL_Y, COL_A AS C3 FROM TEST_TAB_B WHERE COL_R < 7 ORDER BY C3 DESC, 2 The ORDER BY clause must be the last clause on the last query in the stack
Copyright IBM Corporation 2007

UNION ALL - Example 1


For workdepts C01 and A00 display workdept, last name concatenated to first name and in a GENDER column print MALE or FEMALE where appropriate
SELECT WORKDEPT, LASTNAME || ', ' || FIRSTNME AS NAME, 'MALE' AS GENDER FROM EMPLOYEE WHERE SEX = 'M' AND WORKDEPT IN ('A00', 'C01') UNION ALL SELECT WORKDEPT, LASTNAME || ', ' || FIRSTNME AS NAME, 'FEMALE' AS GENDER FROM EMPLOYEE WHERE SEX = 'F' AND WORKDEPT IN ('A00', 'C01') ORDER BY WORKDEPT
WORKDEPT A00 A00 A00 C01 C01 C01 NAME HAAS, CHRISTINE LUCCHESSI, VINCENZO O'CONNELL, SEAN KWAN, SALLY QUINTANA, DOLORES NICHOLLS, HEATHER GENDER FEMALE MALE MALE FEMALE FEMALE FEMALE

Copyright IBM Corporation 2007

UNION ALL - Example 2


SELECT
As sketched out below, use two lines per department. On line one print manager's information, on line two print department information.

MGRNO , 'Dept.:', DEPTNAME AS NAME FROM DEPARTMENT WHERE MGRNO IS NOT NULL UNION ALL SELECT MGRNO, 'Mgr.:', LASTNAME AS NAME FROM DEPARTMENT D, EMPLOYEE E WHERE D.MGRNO = E.EMPNO ORDER BY 1,2 DESC

MGRNO 000010 000010 000020 000020 000030 000030 000050 000050

Mgr.: Dept.: Mgr.: Dept.: Mgr.: Dept.: Mgr.: Dept.:

NAME HAAS SPIFFY COMPUTER SERVICE DIV. THOMPSON PLANNING KWAN INFORMATION CENTER GEYER SUPPORT SERVICES

Copyright IBM Corporation 2007

UNION ALL - Example 3


SELECT FROM WHERE LASTNAME, EDLEVEL EMPLOYEE JOB = 'ANALYST' LASTNAME QUINTANA NICHOLLS EDLEVEL 16 18

SELECT FROM WHERE

LASTNAME, EDLEVEL EMPLOYEE EDLEVEL = 18

LASTNAME HAAS THOMPSON NICHOLLS LUTZ

EDLEVEL 18 18 18 18

SELECT FROM WHERE UNION ALL SELECT FROM WHERE

LASTNAME, EDLEVEL EMPLOYEE JOB = 'ANALYST' LASTNAME, EDLEVEL EMPLOYEE EDLEVEL = 18


Copyright IBM Corporation 2007

LASTNAME QUINTANA NICHOLLS HAAS THOMPSON NICHOLLS LUTZ

EDLEVEL 16 18 18 18 18 18

UNION
SELECT FROM WHERE LASTNAME, EDLEVEL EMPLOYEE JOB = 'ANALYST' LASTNAME NICHOLLS QUINTANA EDLEVEL 18 16

SELECT FROM WHERE

LASTNAME, EDLEVEL EMPLOYEE EDLEVEL = 18

LASTNAME HAAS LUTZ NICHOLLS THOMPSON

EDLEVEL 18 18 18 18

SELECT FROM WHERE UNION SELECT FROM WHERE

LASTNAME, EDLEVEL EMPLOYEE JOB = 'ANALYST' LASTNAME, EDLEVEL EMPLOYEE EDLEVEL = 18


Copyright IBM Corporation 2007

LASTNAME HAAS LUTZ NICHOLLS QUINTANA THOMPSON

EDLEVEL 18 18 18 16 18

UNION - Generation of Fitting Result Rows


SELECT FROM UNION SELECT FROM UNION SELECT FROM UNION SELECT FROM ORDER BY EMPNO 000010 000010 000010 000010 000020 000020 000020 000020 . C.I EMPNO, SUBSTR(FIRSTNME, 1, 1) || '.' || MIDINIT, LASTNAME, SALARY AS INCOME, 1 AS SORT EMPLOYEE ALL EMPNO, ' ', ' ', BONUS, 2 AS SORT EMPLOYEE ALL EMPNO, ' ', ' ', COMM, 3 AS SORT EMPLOYEE ALL EMPNO, ' ', 'SUM: ', SALARY + BONUS + COMM, 4 AS SORT EMPLOYEE EMPNO, SORT LASTNAME HAAS SUM: THOMPSON SUM: . INCOME 52750.00 1000.00 4220.00 57970.00 41250.00 800.00 3300.00 45350.00 . SORT 1 2 3 4 1 2 3 4 .

M.L

Copyright IBM Corporation 2007

EXCEPT and INTERSECT


SELECT FROM WHERE EXCEPT SELECT FROM WHERE LASTNAME, EDLEVEL EMPLOYEE JOB = 'ANALYST' LASTNAME, EDLEVEL EMPLOYEE EDLEVEL = 18 LASTNAME QUINTANA EDLEVEL 16

LASTNAME, EDLEVEL SELECT EMPLOYEE FROM JOB = 'ANALYST' WHERE INTERSECT LASTNAME, EDLEVEL SELECT EMPLOYEE FROM EDLEVEL = 18 WHERE

LASTNAME NICHOLLS

EDLEVEL 18

Copyright IBM Corporation 2007

Checkpoint
1. True or False? The results of arbitrary SELECTs can be combined by means of UNION and ordered to get a new result. 2. Why or when should you use UNION?
a. When all duplicate rows have to be eliminated. b. When SELECTs with an arbitrary number of columns should be combined.

3. Which rules do you have to consider when using UNION?

Copyright IBM Corporation 2007

Checkpoint Solutions
1. False. The SELECTs must follow very strict UNION rules. 2. a 3. Equal number of columns. Compatible data types. ORDER BY must be the last clause. In the ORDER BY clause, numbers must be used when the column being sorted does not have the same name in all SELECTs.

Copyright IBM Corporation 2007

Unit Summary
Having completed this unit, you should be able to: Produce a single result table containing data from more than one query State the UNION rules State the difference between UNION and UNION ALL

Copyright IBM Corporation 2007

You might also like