3.201 cursos gratis
6.235.079 alumnos
Publica tu curso gratis
Busca cursos gratis:
Estás aquí: mailxmail > Cursos de Informática > Programación > SQL > Ejemplo Subconsultas (II)

SQL

Autor: Claudio
Curso:  4,49/5 4,49/5 (792 opiniones) |34144 alumnos|Fecha publicación: 10/05/2004
Capítulos del curso

Capítulo 34:

 Ejemplo Subconsultas (II)

SELECT DISTINCT
NombreContacto, NombreCompania, CargoContacto, Telefono
FROM
Clientes
WHERE
IdCliente IN (
SELECT DISTINCT IdCliente
FROM Pedidos
WHERE FechaPedido <#07/01/1993#
)
(Obtiene una lista de las compañías y los contactos de todos los clientes que han realizado un pedido en el segundo trimestre de 1993.)

SELECT
Nombre, Apellidos
FROM
Empleados AS E
WHERE EXISTS
(
SELECT *
FROM
Pedidos AS O
WHERE O.IdEmpleado = E.IdEmpleado
)

(Selecciona el nombre de todos los empleados que han reservado al menos un pedido.)

SELECT DISTINCT
Pedidos.Id_Producto, Pedidos.Cantidad,
(
SELECT
Productos.Nombre
FROM
Productos
WHERE
Productos.IdProducto = Pedidos.IdProducto
) AS ElProducto
FROM
Pedidos
WHERE
Pedidos.Cantidad = 150
ORDER BY
Pedidos.Id_Producto
(Recupera el Código del Producto y la Cantidad pedida de la tabla pedidos, extrayendo el nombre del producto de la tabla de productos.)

SELECT
NumVuelo, Plazas
FROM
Vuelos
WHERE
Origen = 'Madrid'
AND Exists (
SELECT T1.NumVuelo FROM Vuelos AS T1
WHERE T1.PlazasLibres > 0 AND T1.NumVuelo=Vuelos.NumVuelo)

(Recupera números de vuelo y capacidades de aquellos vuelos con destino Madrid y plazas libres

Supongamos ahora que tenemos una tabla con los identificadores de todos nuestros productos y el stock de cada uno de ellos. En otra tabla se encuentran todos los pedidos que tenemos pendientes de servir. Se trata de averiguar que productos no se podemos servir por falta de stock.

SELECT
PedidosPendientes.Nombre
FROM
PedidosPendientes
GROUP BY
PedidosPendientes.Nombre
HAVING
SUM(PedidosPendientes.Cantidad <
(
SELECT
Productos.Stock
FROM
Productos
WHERE
Productos.IdProducto = PedidosPendientes.IdProducto
)
)

Supongamos que en nuestra tabla de empleados deseamos buscar todas las mujeres cuya edad sea mayor a la de cualquier hombre:

SELECT
Empleados.Nombre
FROM
Empleados
WHERE
Sexo = 'M' AND Edad > ANY
(SELECT Empleados.Edad FROM Empleados WHERE Sexo ='H')

ó lo que sería lo mismo:

SELECT
Empleados.Nombre
FROM
Empleados
WHERE
Sexo = 'M' AND Edad >
(SELECT Max( Empleados.Edad )FROM Empleados WHERE Sexo ='H')

La siguiente tabla muestra algún ejemplo del operador ANY y ALL

Valor 1OperadorValor 2Resultado
3> ANY(2,5,7)Cierto
3= ANY(2,5,7)Falso
3= ANY(2,3,5,7)Cierto
3> ALL(2,5,7)Falso
3< ALL(5,6,7)Falso

El operacion =ANY es equivalente al operador IN, ambos devuelven el mismo resultado.

Para concluir este apartado comentar que: la cláusula EXISTS se puede emplear para generar la intersección entre dos consultas y, por tanto, la cláusula NOT EXISTS para generar la diferencia entre consultas.

Capítulo siguiente - Creación de Tablas Nuevas
Capítulo anterior - Ejemplo Subconsultas (I)
Recibe nuestras novedades
Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Hay 792 opiniones. Opina sobre este curso.

Descarga el PDF gratis

Cursos similares a SQL


Cursos Valoración Alumnos Vídeo
PHP y MySQL. Aplicaciones Web: HTML (cuarta parte)
Programación de aplicaciones Web con PHP y MySQL. Siguiendo con el estudio de las páginas Web HTML, ahora aprenderás a cerca de las pseudoclases. ... [02/12/08]
5/5 595  
Primeros pasos con XML y XSL
XML es el acrónimo del inglés eXtensible Markup Language cuyo objetivo principal es conseguir una página web más semántica. Inicialmente nace como sucesor del HTML, separ... [10/09/04]
 4,25/5 6.786  
Usabilidad web
La usabilidad es el principal elemento con el cual debe contar toda página Web. Yo defino Usabilidad como la capacidad de una aplicación de ser agradable, eficiente y fá... [17/07/06]
 4,25/5 1.753  


Publicar en   del.icio.us    digg    meneame

¿Qué es mailxmail.com?|ISSN: 1699-4914|Recomiéndanos|Ayuda
Condiciones legales de mailxmail