curso de java parte 2

Upload: alex-quito

Post on 12-Feb-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/23/2019 curso de java parte 2

    1/17

    6Copyright 2004, Oracle. All rights reserved.

    Using Subqueries to Solve Queries

  • 7/23/2019 curso de java parte 2

    2/17

    6-2 Copyright 2004, Oracle. All rights reserved.

    Objectives

    After completing this lesson, you should be able to do

    the following:

    efine subqueries

    escribe the types of problems that subqueriescan solve

    !ist the types of subqueries

    "rite single#row and multiple#row subqueries

  • 7/23/2019 curso de java parte 2

    3/17

    6-3 Copyright 2004, Oracle. All rights reserved.

    Using a Subquery

    to Solve a $roblem

    "ho has a salary greater than Abel%s&

    "hich employees have salaries greater

    than Abel%s salary&

    'ain query:

    "hat is Abel%s salary&

    Subquery:

  • 7/23/2019 curso de java parte 2

    4/17

    6-4 Copyright 2004, Oracle. All rights reserved.

    (he subquery )inner query* e+ecutes once before

    the main query )outer query*

    (he result of the subquery is used by the main

    query

    SELECT select_list

    FROM table

    WHERE expr operator

    (SELECT select_list

    FROM table);

    Subquery Synta+

  • 7/23/2019 curso de java parte 2

    5/17

    6-5 Copyright 2004, Oracle. All rights reserved.

    SELECT last_name

    FROM employees

    WHERE salary >

    (SELECT salary

    FROM employees WHERE last_name = 'Ael');

    Using a Subquery

    --...

  • 7/23/2019 curso de java parte 2

    6/17

    6-6 Copyright 2004, Oracle. All rights reserved.

    /uidelines for Using Subqueries

    0nclose subqueries in parentheses

    $lace subqueries on the right side of the

    comparison condition

    (he OR!ER "#clause in the subquery is notneeded unless you are performing (op#1 analysis

    Use single#row operators with single#row

    subqueries, and use multiple#row operators with

    multiple#row subqueries

  • 7/23/2019 curso de java parte 2

    7/176-7 Copyright 2004, Oracle. All rights reserved.

    (ypes of Subqueries

    Single#row subquery

    'ultiple#row subquery

    'ain query

    Subquery

    returnsS(23!045

    S(23!045

    SA2'A1

    'ain query

    Subquery

    returns

  • 7/23/2019 curso de java parte 2

    8/176- Copyright 2004, Oracle. All rights reserved.

    Single#4ow Subqueries

    4eturn only one row

    Use single#row comparison operators

    Operator 'eaning

    = 0qual to

    > /reater than

    >= /reater than or equal to

    $ !ess than

    $= !ess than or equal to

    $> 1ot equal to

  • 7/23/2019 curso de java parte 2

    9/176-! Copyright 2004, Oracle. All rights reserved.

    SELECT last_name% &o_% salary

    FROM employees

    WHERE &o_ =

    (SELECT &o_

    FROM employees WHERE employee_ = *)

    A+! salary >

    (SELECT salary

    FROM employees

    WHERE employee_ = *,);

    0+ecuting Single#4ow Subqueries

    S(23!045

    67..

  • 7/23/2019 curso de java parte 2

    10/176-"0 Copyright 2004, Oracle. All rights reserved.

    SELECT last_name% &o_% salary

    FROM employees

    WHERE salary =

    (SELECT M-+(salary)

    FROM employees);

    Using /roup 8unctions in a Subquery

    69..

  • 7/23/2019 curso de java parte 2

    11/176-"" Copyright 2004, Oracle. All rights reserved.

    SELECT epartment_% M-+(salary)

    FROM employees

    .RO/0 "# epartment_

    HA1-+. M-+(salary) >

    (SELECT M-+(salary)

    FROM employees

    WHERE epartment_ = 23);

    (he HA1-+.3lause with Subqueries

    (he Oracle server e+ecutes subqueries first

    (he Oracle server returns results into the HA1-+.

    clause of the main query

    69..

  • 7/23/2019 curso de java parte 2

    12/176-"2 Copyright 2004, Oracle. All rights reserved.

    SELECT employee_% last_name

    FROM employees

    WHERE salary =

    (SELECT M-+(salary)

    FROM employees .RO/0 "# epartment_);

    "hat s "rong with (his Statement&

    ERROR at lne *4

    ORA53*674 sn8le5ro9 s::ery ret:rns more t

  • 7/23/2019 curso de java parte 2

    13/176-"3 Copyright 2004, Oracle. All rights reserved.

    SELECT last_name% &o_

    FROM employees

    WHERE &o_ =

    (SELECT &o_

    FROM employees WHERE last_name = 'Haas');

    "ill (his Statement 4eturn 4ows&

    no ro9s selete

    Subquery returns no values

  • 7/23/2019 curso de java parte 2

    14/176-"4 Copyright 2004, Oracle. All rights reserved.

    'ultiple#4ow Subqueries

    4eturn more than one row

    Use multiple#row comparison operators

    Operator 'eaning

    -+ 0qual to any member in the list

    A+# 3ompare value to each value returned by the

    subquery

    ALL 3ompare value to every value returned by the

    subquery

  • 7/23/2019 curso de java parte 2

    15/176-"5 Copyright 2004, Oracle. All rights reserved.

    SELECT employee_% last_name% &o_% salary

    FROM employees

    WHERE salary $ A+#

    (SELECT salary

    FROM employees WHERE &o_ = '-T_0RO.')

    A+! &o_ $> '-T_0RO.';

    Using theA+#Operator

    in 'ultiple#4ow Subqueries

    ;..., 7...,

  • 7/23/2019 curso de java parte 2

    16/176-"6 Copyright 2004, Oracle. All rights reserved.

    SELECT employee_% last_name% &o_% salary

    FROM employees

    WHERE salary $ ALL

    (SELECT salary

    FROM employees WHERE &o_ = '-T_0RO.')

    A+! &o_ $> '-T_0RO.';

    Using theALLOperator

    in 'ultiple#4ow Subqueries

    ;..., 7...,

  • 7/23/2019 curso de java parte 2

    17/176 "7 C i ht 2004 O l All i ht d

    SELECT emplast_name

    FROM employees emp

    WHERE empemployee_ +OT -+

    (SELECT m8rmana8er_

    FROM employees m8r);

    no ro9s selete

    1ull >alues in a Subquery