Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Promoción de webs | Rentabilidad de webs
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Subconsultas


Para realizar alguna operación de consulta a veces necesitamos los datos obtenidos en otras consultas, esto lo podemos hacer en una única consulta, utilizando las subconsultas.


Una subconsulta no es más que un select dentro de otro select. Las subconsultas son aquellas sentencias select que forman parte de la clausula where de otra sentencia select. El formato es el siguiente:

SELECT …
FROM ….
WHERE columna operador_comparativo (SELECT….. FROM… WHERE…);

Cuando se ejecuta esta sentencia primero se realiza la subconsulta y luego el resto de sentencia.

Condiciones de búsqueda en subconsultas

Las subconsultas normalmente aparecen como parte de la condición de una búsqueda dentro del where o having.
Condiciones de búsqueda que puede haber dentro de una subconsulta:
Comparación de subconsultas: Comparan el valor de la expresión con un valor único obtenido en la subconsulta. Son los simbolos típicos de comparación (<,>,=,<=,>=).

Select * from empleado where oficio=(select oficio from empleado where apellido='Lopez');

Pertenencia a un conjunto de valores devueltos por la subconsulta: Comprueba si el valor esta dentro del conjunto de valores devuelto por la subconsulta.

Select * from empleado where oficio IN (select oficio from empleado where departamento=20);

Existencia: nos dice si la subconsulta devuelve alguna fila o no. Para ello utilizamos las palabras EXISTS o NOT EXITS.

Select * from departamento where EXISTS (select * from empleado where empleado.id_departamento = departamento.id_departamento);

Comparación cuantificada: Para esto también utilizamos los comparadores basicos unidos a ANY o ALL.
ANY compara el valor de una expresión con cada uno del conjunto de valores obtenidos en la subconsulta. Con que una de las comparaciones de TRUE la consulta da TRUE

Select * from empleado where salario = ANY (select salario from empleado where id_departamento=30);

ALL compara el valor de una expresión con cada uno del conjunto de valores obtenidos en la subconsulta. Tienen que ser todos TRUE para que la subconsulta devuelva TRUE

Select * from empleado where salario < ALL (select salario from emple where id_departamento=20);

Subconsultas que generan valores simple

Son las subconsultas que obtienen un solo registro. Para ello utilizamos los operadores de comparación básicos. Si la subconsutla devuelve más de un registro nos sale un mensaje de error.

Subconsultas que generan listas de valores

Son las subconsultas que nos devuelven más de un registro. Para estas subconsultas utilizamos el operador IN.

Subconsultas correlacionadas

Estas subconsultas hacen referencia a una columna o varias de la consulta principal. Para verlo mejor ponemos un ejemplo.
Queremos obtener los datos de los empleados cuyo salario sea el máximo salario del departamento.

Select * from empleado E where salario = (select max(salario) form empleado where id_empleado=E.id_empleado);

Esta sentencia devuelve para cada fila que se obtiene el máximo salario del departamento que se está obteniendo en la consulta principal.

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 2 categorias relacionadas
+ 1 comentario no revisado

 Autoría, licencia y acciones sobre este artículo

Informe de Sara Alvarez*
Equipo DesarrolloWeb.com
URL: http://www.desarrolloweb.com

Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.

* Para consultas técnicas utilizar la lista de correo.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Manual de iniciación a la programación

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Programación
+ Entrar en Lenguaje SQL


 Comentarios sin revisar
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
 Se ha encontrado un comentario sin revisar

Ver el comentario no revisadoVer los comentarios no revisados
Añadir un comentario al artículo Añadir un comentario del artículo



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Manual de iniciación a la programación
Categorías
+Programación
+Lenguaje SQL

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia