12.212 cursos gratis
8.324.541 alumnos
Facebook Twitter YouTube
Busca cursos gratis:

SQL

Autor: Claudio
Curso:
8,97/10 (798 opiniones) |73355 alumnos|Fecha publicación: 10/05/2004

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)

Nuestras novedades en tu e-mail

Escribe tu e-mail:

Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Cursos similares a SQL


  • Vídeo
  • Alumnos
  • Valoración
  • Cursos
1. Curso de MySQL con PHP
El gestor de bases de datos MySQL se basa en el sistema de bases de datos... [10/01/11]
1.754  
2. Introducción al lenguaje SQL
Curso de programación, aprende el lenguaje sql que es un lenguaje de acceso a bases... [16/11/11]
131  
3. SQL. Uso de la clausula WHERE
Vamos a aprender a hacer algunas consultas en sql desde las básicas hasta algunas... [19/12/11]
7  

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


¿Te gustaría visitar más cursos gratis de Programación?