Consultas de varias tablas en la BD Neptuno

Significado y relaciones de la BD

La tabla principal es pedidos

Un cliente solicita un pedido.

    clientes.id = pedidos.cliente_id

Un empleado atiende al cliente cuando realiza el pedido.

    empleados.id = pedidos.empleado_id

El pedido lo entrega al cliente una compañía de envíos.

    envios.id = pedidos.envio_id

En un pedido se piden varios productos que se especifican en la tabla detalles.

    pedidos.id = detalles.pedido_id
    productos.id = detalles.producto_id

Los productos se clasifican por categorias.

    categorias.id = productos.categoria_id

Cada producto es suministrado por un proveedor.

    proveedores.id = productos.proveedor_id

Cada empleado tiene asignado un jefe que es otro empleado.

    empleados.id = empleados.jefe_id

Importar la base de datos Neptuno

  1. Ir al phpMyAdmin

    • http://localhost/phpmyadmin
  2. Crear una nueva base de datos vacía

    • Nombre: bd_neptuno
    • Cotejamiento: utf8_general_ci
  3. Importa el archivo "bd_neptuno.sql" que está en el dia01

Ejemplos de consultas

1) Pedidos del año 1996 que ha realizado cada empleado.

    SELECT nombre, apellidos,
        p.id, fecha_pedido
    FROM pedidos p
      INNER JOIN empleados e ON p.empleado_id = e.id
    WHERE fecha_pedido LIKE '1996%'
    ORDER BY nombre, p.id

2) De cada pedido mostrar su id, la fecha, el nombre de empleado y la empresa del cliente. Muestra sólo los pedidos de febrero del año 1997 y de los clientes de Alemania. Ordénalo por la fecha del pedido.

    SELECT p.id, fecha_pedido, nombre, empresa
    FROM pedidos p
      INNER JOIN empleados e ON p.empleado_id = e.id
      INNER JOIN clientes c ON p.cliente_id = c.id
    WHERE fecha_pedido LIKE '1997-02%'
      AND c.pais = 'Alemania'
    ORDER BY fecha_pedido

3) De cada producto muestra su nombre, el precio unidad, la empresa del proveedor y el nombre de la categoría. Ordénalo por nombre de producto. Fíltralo por precios entre 30 y 60 euros.

    SELECT producto, precio_unidad, empresa, categoria
    FROM productos p
      INNER JOIN proveedores r ON p.proveedor_id = r.id
      INNER JOIN categorias c ON p.categoria_id = c.id
    WHERE precio_unidad BETWEEN 30 AND 60
    ORDER BY producto

4) De cada detalle muestra el id de pedido, el nombre del producto, el precio unidad, la cantidad y el importe. El importe calcúlalo multiplicando cantidad por precio.

Filtra por los pedidos 10266, 10271 y 10280. Ordénalo por id de pedido.

    SELECT pedido_id, producto, d.precio_unidad, cantidad, d.precio_unidad * cantidad AS importe
    FROM detalles d
      INNER JOIN productos p ON d.producto_id = p.id
    WHERE pedido_id IN (10266, 10271, 10280)
    ORDER BY pedido_id

5) Mostrar los pedidos de clientes franceses que han pedido queso. Los campos a mostrar son el id de pedido, la empresa del cliente y el nombre del producto. Se necesitan las tablas pedidos, clientes, detalles y productos. En el filtro hay que indicar que el producto contenga la palabra queso. Ordénalo por cliente e id de pedido.

    SELECT pedido_id, empresa, producto 
    FROM clientes c 
      INNER JOIN pedidos p ON c.id = p.cliente_id
      INNER JOIN detalles d ON p.id = d.pedido_id
      INNER JOIN productos r ON d.producto_id = r.id
    WHERE producto LIKE '%queso%'
      AND pais = 'Francia'
    ORDER BY empresa, pedido_id

Proinf.net