Aplicación práctica para la introducción a SQL: uniones y subconsultas
Descripción general de la lección y conocimientos necesarios
Para completar con éxito esta lección, debería poder definir uniones en SQL y explicar la diferencia entre uniones internas y externas. Debe tener MySQL instalado en su computadora y también la base de datos de muestra de modelos clásicos .
Código de programa
Si observa la base de datos de modelos clásicos , notará oportunidades para unir datos en una sola consulta. Algunos de estos incluyen clientes y pedidos, pedidos y detalles de pedidos, pedidos y productos, etc.
Para el código del programa, crearemos una unión interna entre la tabla de pedidos y la tabla de detalles del pedido . Esto nos ayudará a obtener más información sobre los pedidos que se encuentran en la base de datos.
Primero, veamos las columnas en cada uno.
Tabla de pedidos |
---|
*Número de orden |
fecha de orden |
fecha requerida |
fecha de envío |
estado |
comentarios |
número de cliente |
Tabla de detalles de pedido |
---|
*Número de orden |
*código de producto |
cantidadPedido |
priceEach |
orderLineNumber |
* = clave principal
Un campo común entre los dos es orderNumber . Lo usaremos para extraer el número de pedido, la fecha del pedido, la fecha de envío, el código del producto, la cantidad solicitada y el precio. Ingrese la siguiente instrucción SQL y haga clic en el ícono Ejecutar (el rayo), o ingrese Ctrl + Shift + Enter .
SELECCIONE orders.orderNumber, orderDate, shippingDate, productCode, amountOrdered, priceEach
FROM orders
INNER JOIN orderdetails
ON orders.orderNumber = orderdetails.orderNumber;
La razón por la que especificamos orders.orderNumber es porque el campo orderNumber está en ambas tablas. Para facilitar la lectura, puede comenzar cada campo con la tabla que está consultando.
La figura 1 muestra una instantánea de los resultados.
Aplicación de código
Hemos devuelto con éxito información de dos tablas en la base de datos de modelos clásicos . Ahora es tu turno de crear una unión entre tablas.
Considere las mesas de clientes y pedidos . Cree una unión a la izquierda entre las tablas (la tabla de la izquierda son los clientes). Debido a que estamos usando MySQL, la combinación es una combinación izquierda (otras bases de datos la llaman combinación externa izquierda, pero el resultado es el mismo). El resultado debería mostrar no solo los clientes con pedidos, sino también los clientes sin pedidos.
Preguntas de seguimiento
Según las lecciones de este capítulo y las consultas que haya completado hasta ahora, responda las siguientes preguntas.
- Cree una subconsulta de las tablas de clientes y oficinas para seleccionar clientes que tengan el mismo estado que la oficina. Por ejemplo, seleccione oficinas estatales de CA y aquellos clientes que vivan en CA.
- Crear un CROSS JOIN entre los clientes y la mesa de pedidos
- Usando un enfoque de subconsulta, encuentre los pagos de los clientes que sean menores que el promedio, Y que se realizaron antes del 1/1/2005.
Clave de respuesta
A continuación se encuentran las respuestas a la aplicación del código y las preguntas de seguimiento.
Aplicación de código
En la aplicación de código, unirá las tablas en el campo customerNumber . En el siguiente código, seleccionamos algunos campos de cada tabla.
SELECCIONE customers.customerNumber, customerName, creditLimit, orderNumber, orderDate, SHIPDate
FROM clientes
LEFT OUTER JOIN orders
ON customers.customerNumber = orders.customerNumber;
La figura 2 muestra una instantánea de los datos; notará que American Souvenirs Inc y Porto Imports Co no han recibido ningún pedido. Esto indica que la combinación externa izquierda se realiza correctamente, ya que recupera registros de la tabla izquierda y la tabla derecha, incluso si ningún registro coincide en el lado derecho.
Notará que hay filas con un valor NULL; esto significa que el cliente no ha recibido ningún pedido. ¡Esto también significa que nuestra combinación externa izquierda era correcta!
Preguntas de seguimiento
A continuación se encuentran las respuestas a las preguntas de seguimiento.
Crear una subconsulta
SELECT customerNumber, customerName
FROM clientes
WHERE
estado IN (SELECT estado
FROM
oficinas
WHERE estado = 'CA');
ÚNETE CRUZADO
Esto devolverá todo, por lo que si tiene bases de datos más grandes, ¡podría causar problemas!
SELECCIONAR *
DE los clientes
CRUZAR UNIR pedidos;
Uso de una subconsulta con AVG
Esta subconsulta debería ser bastante similar a la primera, excepto que ahora está utilizando la función AVG para determinar el monto promedio de los pagos. Además, agregará una cláusula AND para filtrar según la fecha de pago.
SELECCIONE el número de cliente, el número de cheque, la fecha de pago, el monto de los
pagos
DONDE
monto <(SELECCIONE
PROMEDIO (monto) de los
pagos)
Y la fecha de pago <'2005-01-01';
Aprende más sobre:
Arte Arquitectura Biologia Ciencia Ciencia Fisica Ciencias de la Tierra Ciencias Sociales Economia Historia Historia Mundial Historia Moderna Medio Ambiente y Ecologia Literatura Plantas y Animales Religiones del Mundo QuimicaArticulos relacionados
- Los principios básicos del gobierno estadounidense
- Control de inventario: definición y mejores prácticas
- Poder de monopolio: definición, fuentes y abuso
- Emprendimiento Social: Definición, características y ejemplos
- Principios de la gestión de proyectos Lean Agile
- ¿Qué son las tarifas? – Resumen
- Evaluaciones de desempeño: beneficios y desafíos
- Negociación distributiva: Resumen y ejemplos ¿Qué es la negociación distributiva?
- ¿Qué es Lean Manufacturing?
- Bienes no duraderos: definición y ejemplos
- Consideraciones de planificación financiera para las circunstancias de la vida
- Cómo calcular los saldos de efectivo y equivalentes de efectivo »Wiki Ùtil
- Agotamiento acumulado
- Análisis de los riesgos identificados de incorrección material en los estados financieros
- Mercado de Valores: Definición, tipos y funciones