Sadasd

Solo disponible en BuenasTareas
  • Páginas : 13 (3060 palabras )
  • Descarga(s) : 0
  • Publicado : 4 de noviembre de 2010
Leer documento completo
Vista previa del texto
Subconsultas
Una subconsulta es una consulta que aparece dentro de la cláusula where o having de otra sentencia SQL. La subconsulta debe ir encerrada entre paréntesis, pero por otra parte tiene el formato de una sentencia select, pero existen diferencias entre una subconsulta y una sentencia select real, una subconsulta:
- debe producir una única columna de datos como resultados. Estosignifica que una subconsulta siempre tiene un único elemento de selección en su cláusula select;
- no puede ser union de varias sentencias select diferentes.
- La cláusula order by no puede ser especificada en una subconsulta.
- Los nombres de columna que aparecen en una subconsulta pueden referirse a columnas de tablas en la consulta principal, esto se denomina referencias externas.Subconsultas en la cláusula where
Las subconsultas suelen ser utilizadas en la cláusula where de una sentencia SQL, en este caso funciona como parte del proceso de selección de filas.
Las condiciones de búsqueda en subconsulltas son las que se describen:
Test de comparación subconsulta: =, < >, , =. Es una forma modificada del test de comparación simple. Compara el valor de una expresióncon el valor único producido por una subconsulta, y devuelve un resultado true si la comparación es cierta.
Por ejemplo si se desea listar los artículos cuyo precio unitario es mayor al precio promedio global de los artículos:
select * from articulos
where pre_unit > (select avg(a.pre_unit)
from articulos a)
La subconsulta especificada en este test debe producir una única fila deresultados. Además permite una subconsulta únicamente en el lado derecho del operador de comparación: A < (subconsulta).
Test de pertenecia al conjunto: IN. Es una forma modificada del test de pertenencia a conjunto simple; compara un único valor de datos con una columna de valores producida por una subconsulta y devuelve un resultado true si el valor coincide con uno de los valores de lacolumna. El siguiente ejemplo lista los datos de los clientes que compraron este año:
select * from clientes
where cod_clie in (select cod_clie
from facturas
where year(fecha) = getdate() )
Test de existencia: EXISTS. Comprueba si una subconsulta produce alguna fila de resultados; no hay test de comparación simple que se asemeje al test de existencia, solamente se utiliza consubconsultas. El ejemplo anterior (lista los datos de los clientes que compraron este año) con este test sería: select * from clientes c
where exists (select cod_clie
from facturas f
where c.cod_clie = f.cod_clie
and year(fecha) = getdate() )
Test cuantificados: ANY; ALL. Estos tests extienden el test de pertenencia al conjunto IN, a otros operadores de comparación como =,= y . El test any se utiliza con uno de estos seis operadores de comparación. Para efectuar el test, SQL utiliza el operador de comparación especificado para comparar el valor del test con cada valor de datos en la columna, uno cada vez. Si alguna de las comparaciones individuales producen un resultado true, el test any devuelve un resultado true. Un ejemplo de utilización de any seria listarlos datos de los clientes que compraron algún producto cuyo precio sea menor a 10:
select * from clientes c
where 10 >= any (select pre_unit
from facturas f, detalle d
where f.nro_factu=d.nro_factu
and c.cod_clie=f.cod_clie )

El test all se utiliza también con uno de los seis operadores de comparación. Para efectuar el test, SQL utiliza el operador de comparaciónespecificado para comparar el valor de test con todos y cada uno de los valores de datos de la columna. Si todas las comparaciones individuales producen un resultado true, el test all devuelve un resultado true. Por ejemplo si se quiere listar los clientes que siempre fueron atendidos por el vendedor 3:
select * from clientes c
where 3 = all (select cod_vend
from facturas
where...
tracking img