RSS

CLASE 6

06 Mar

Nested subqueries

• SQL provides a mechanism for the nesting of subqueries
• A subquery is a select-form-where expression that is nested within another query
• A common use of subqueries is to perform tests for set membership, set comparisons, and set cardinality

“In” construct

Find all customers who have both an account and a loan at the bank
Select distinct customer-name
From borrower
Where customer_name in (select customer_name from depositor)

Find all customers who have a loan at the bank but do not have an account al the bank
Select distinct customer_name
From borrower
Where customer_name not in
(select customer_name from depositor)

Example Query

Find all customers who have both an account and a loan at the Perryridge branch
Select distinct customer_name
From borrower, loan
Where borrower.loan_number=loan.loan_number and branch_name=’Perryridge’ and (branch_name, customer_name) in
(select branch_name, customer_name
From depositor, account
Where depositor.account_number= account.account_number)
Note:
above query can be written in a much simpler manner. The formulation above is simply to illustrate SQL features

“Some” construct

Find all branches that have greater assets than some branch locates in Brooklyn
Select distinct T.branch_name
From branch as, T,
Where T.assets > S.assest and
S.branch.city=’Brooklyn’

Some query using> some clause
Select branch_name
From branch
Where assets>some
(select assets from branch
Where branch.city=’Brooklyn’)

“All” Construct

Find the names of all branches that have greater assets that all branches located in Brooklyn
Select branch_name
From branch
Where assets>all
(select assets from branch
Where branch_city=’Brooklyn’)

“Exists” Construct

Find all customers who have an account at all branches located in Brooklyn
Select distinct S.customer_name
From depositor as S
Where not exist (
(Select branch_name
From branch
Where branch_city=’Brooklyn’)
Except
(select R.branch_name
From depositor as T, account as R
Where T. account_number=R.account_number and
S.customer_name=T.customer_name))

Note: cannot write this query using= all and its variants

TRADUCCCIÓN

Subconsultas anidadas

• SQL proporciona un mecanismo para la anidación de las subconsultas
• Una subconsulta es una forma de seleccionar, donde la expresión que está anidada dentro de otra consulta
• Un uso común de subconsultas es llevar a cabo las pruebas de miembro del sistema, establecer comparaciones, y cardinalidad en conjunto

Constructor “In”

Encontrar todos los clientes que tienen una cuenta y un préstamo en el banco

Seleccione el nombre de distintos clientes
Desde la tabla prestamista
Cuando en el nombre del cliente (nombre-cliente elegir desde depositante)

Buscar todos los clientes que tienen un préstamo en el banco, pero no tienen una cuenta del banco

Seleccione distintos nombres del cliente
Desde la tabla prestamista
En caso de no encontrar el nombre del cliente
(seleccionar nombre-cliente desde el depositante)

Ejemplo de consulta

Encontrar todos los clientes que tienen una cuenta y un préstamo en la marca Peryridge
Seleccione distintos nombres de cliente
Desde la tabla de prestamista, de préstamo
Cuando el numero de deuda del prestamista = numero de préstamo y nombre de marca = ‘Perryridge’ y (nombre de marca, nombre de cliente) y
( selecciona el nombre de la marca, nombre del cliente
Desde el depositante, de la cuenta
Cuando numero del depositante del cliente = numero del cliente)

Nota: la consulta anterior se puede escribir de una manera mucho más simple. La formulación anterior es simplemente para ilustrar las características de SQL

constructor “Algunos”
Buscar todas las marcas que tienen más bienes de una marca que se localiza en Brooklyn

Seleccione distintos T.nombres de las marcas (buscar todas las marcas)
Desde la marca como, T, marca como S
Cuando T.activos> S.activos y
S.marca en la ciudad = ‘Brooklyn’

Algunos consulta con> alguna cláusula
Seleccione nombre de la marca
Desde marca
Cuando los activos> algunos (hace comparación de cada uno de los resultados)
(Seleccionar los activos de la marca
Cuando marca es ciudad = ‘Brooklyn’)

Constructor “Todos”
Buscar los nombres de todas las marcas que tienen más bienes que todas las sucursales situadas en Brooklyn
Seleccione nombre de la marca
De la tabla marca
Cuando los activos> Todos
(seleccionar los activos de la marca
Cuando marca es ciudad = ‘Brooklyn’)

Constructor “Existe”
Encontrar todos los clientes que tienen una cuenta en todas las sucursales ubicadas en Brooklyn
Seleccione distintos S.nombres de clientes
Desde el depositante como S
En caso de no existir (
(Seleccione nombre marca
De la tabla marca
Cuando nombre de ciudad = ‘Brooklyn’)
Salvo
(seleccione R.nombre de la marca
Desde el depositante como T, cuenta como R
Cuando T.numero de cuenta = R.numero de cuenta y
S.nombre del cliente = T.nombre del cliente))

Nota: no se puede escribir esta consulta mediante = todo y sus variantes

 
Deja un comentario

Publicado por en marzo 6, 2011 en TALLER DE BASE DE DATOS

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: