1.
Da de alta un nuevo artículo de 'Primera' categoría para los
fabricantes de 'FRANCIA' y abastece con 5 unidades de ese artículo a
todas las tiendas y en la fecha de hoy.
2. Inserta un pedido de 20 unidades en la tienda '1111A' con el
artículo que mayor número de ventas haya realizado.
3. Da de alta una tienda en la provincia de 'MADRID' y abastécela
con 20 unidades de cada uno de los artículos existentes.
4. Da de alta dos tiendas en la provincia de 'SEVILLA' y
abastécelas con 30 unidades de artículos de la marca de fabricante
'GALLO'.
5. Realiza una venta para todas las tiendas de 'TOLEDO' de 10
unidades en los artículos de 'Primera' categoría.
6. Para aquellos artículos de los que se hayan vendido más de 30
unidades, realiza un pedido de 10 unidades para la tienda con NIF
'5555-B' con la fecha actual.
7. Cambia los datos de la tienda con NIF '1111-A' igualándolos a
los de la tienda con NIF '2222-A'.
8. Cambia todos los artículos de 'Primera' categoría a 'Segunda'
categoría del país 'ITALIA'.
9. Modifica aquellos pedidos en los que la cantidad pedida sea
superior a las existencias del artículo, asignando el 20 por 100 de las
existencias a la cantidad que se ha pedido.
10. Elimina aquellas tiendas que no han realizado ventas.
11. Elimina los artículos que no hayan tenido ni compras ni ventas.
12. Borra los pedidos de 'Primera' categoría cuyo país de
procedencia sea 'BÉLGICA'.
13. Borra los pedidos que no tengan tienda.
14. Resta uno a las unidades de los últimos pedidos de la tienda con
NIF '5555-B'.
Tablas ARTICULOS, FABRICANTES, TIENDAS, PEDIDOS Y VENTAS (hacer
DESC de las tablas)
Un almacén de distribución de artículos desea mantener información
sobre las ventas hechas por las tiendas que compran al almacén.
Dispone de las siguientes tablas para mantener esta información:
ARTICULOS: almacena cada uno de los artículos que el almacén puede
abastecer a las tiendas. Cada artículo viene determinado por las
columnas: ARTICULO, COD_FABRICANTE, PESO y CATEGORIA. La
categoría puede ser 'Primera', 'Segunda' o 'Tercera'.
FABRICANTES: contiene los países de origen de los fabricantes de
artículos. Cada COD_FABRICANTE tiene su país.
TIENDAS: almacena los datos de las tiendas que venden artículos.
Cada tienda se identifica por su NIF.
PEDIDOS: son los pedidos que realizan las tiendas al almacén. Cada
pedido se identifica por: NIF, ARTICULO, COD_FABRICANTE, PESO,
CATEGORIA y FECHA_ PEDIDO. Cada fila de la tabla representa un
pedido.
VENTAS: almacena las ventas de artículos que hace
cada una de las tiendas. Cada venta se identifica
por: NIF, ARTICULO, COD_ FABRICANTE, PESO,
CATEGORIA y FECHA_VENTA. Cada fila de la tabla
representa una venta.
TABLA ARTICULOS
Para que en CATEGORIA solo se puedan añadir las palabras: primera,
segunda y tercera, se utiliza la restricción CHECK.
TABLA FABRICANTES
Para que cada código de fabricante tenga su país, se pone al país
como NOT NULL.
TABLA TIENDAS
En la tabla tiendas se añade información de la tienda: el nombre, la
dirección, el teléfono y el NIF.
1. Da de alta un nuevo artículo de 'Primera' categoría para
los fabricantes de 'FRANCIA' y abastece con 5 unidades
de ese artículo a todas las tiendas y en la fecha de hoy.
Para dar de alta a un artículo se añade (con INSERT INTO) el artículo y
sus características a la tabla ARTICULOS, pero antes se añade el
código de fabricante y el país a la tabla de FABRICANTES (aunque ni
tendría ningún efecto si se hiciese del contrario).
Para que se vea la cantidad de productos que se añaden a las tiendas,
se añade otra columna (con ALTER TABLE PEDIDOS (nombre de la
tabla) ADD CANTIDAD_ARTICULOS (nombre de la columna)
NUMBER(3)).
2. Inserta un pedido de 20 unidades en la tienda '1111A'
con el artículo que mayor número de ventas haya realizado.
Se crea la tienda 1111A, mirar qué artículo tiene más ventas (SELECT
* FROM VENTAS) y después, se añaden 20 pedidos del artículo a
PEDIDOS.
3. Da de alta una tienda en la provincia de 'MADRID' y
abastécela con 20 unidades de cada uno de los artículos
existentes.
En la dirección de la tienda pones la provincia a la que pertenezca (en
este caso Madrid). Y luego, se le añaden 20 unidades del artículo 1 y
20 del artículo 2.
4. Da de alta dos tiendas en la provincia de 'SEVILLA' y abastécelas
con 30 unidades de artículos de la marca de fabricante 'GALLO'.
Primero, se dan de alta las tiendas, luego, se le añade a la tabla de
fabricantes el nombre para poner el nombre de los fabricantes.
Después, se añade el fabricante (GALLO).
5. Realiza una venta para todas las tiendas de 'TOLEDO' de 10
unidades en los artículos de 'Primera' categoría.
Hay que añadir la columna CANTIDAD_ARTICULOS para poder señalar
la cantidad de artículos que se van a vender.
6. Para aquellos artículos de los que se hayan vendido más
de 30 unidades, realiza un pedido de 10 unidades para la
tienda con NIF '5555-B' con la fecha actual.
Primero, hay que saber de qué artículo (o artículos) se han vendido
más de 30 unidades, para ello se hace un SELECT de la tabla VENTAS.
Y cuando ya se sabe el artículo, se hace un INSERT INTO en la tabla
de PEDIDOS para añadir 10 unidades de ese artículo a la tienda con
NIF ‘5555-B'.
7. Cambia los datos de la tienda con NIF '1111-A'
igualándolos a los de la tienda con NIF '2222-A'.
Se añaden las tiendas con el NIF '1111-A' y '2222-A'. Y luego, se
utiliza el UPDATE para cambiar los valores de la tienda con NIF '1111-
A'.
8. Cambia todos los artículos de 'Primera' categoría a 'Segunda'
categoría del país 'ITALIA'.
Con UPDATE se actualiza la columna CATEGORIA, pero para que solo
cambie la que tiene categoría primera y es de Italia, se utilizan
WHERE y AND (añadiendo una condición a cada uno).
9. Modifica aquellos pedidos en los que la cantidad pedida sea
superior a las existencias del artículo, asignando el 20 por 100 de las
existencias a la cantidad que se ha pedido.
10. Elimina aquellas tiendas que no han realizado ventas.
DELETE Y WHERE
11. Elimina los artículos que no hayan tenido ni compras ni ventas.
DELETE WHERE Y AND
12. Borra los pedidos de 'Primera' categoría cuyo país de
procedencia sea 'BÉLGICA'.
Añadir la columna PAIS, para poder añadir un artículo de BELGICA. Y
luego, eliminar pedidos que cumplan dos condiciones (que sean de
primera categoría y que sean de Bélgica).
13. Borra los pedidos que no tengan tienda.
Borra los pedidos los cuales su NIF esté vacío.
14. Resta uno a las unidades de los últimos pedidos de la
tienda con NIF '5555-B'.
Hay que actualizar la tabla (poniendo que los pedidos se resten 1) con
la condición de que sean los pedidos de la tienda con NIF '5555-B'.
1. Da de alta un nuevo artículo de 'Primera' categoría para los
fabricantes de 'FRANCIA' y abastece con 5 unidades de ese
artículo a todas las tiendas y en la fecha de hoy.
Primero, debes insertar un nuevo artículo en la tabla ARTICULOS,
asegurándote de que su categoría sea 'Primera' y que pertenezca a
un fabricante de 'FRANCIA'. Luego, deberás insertar 5 unidades de
este artículo en cada tienda.
sql
Copiar código
-- Insertar un artículo de categoría 'Primera' para los fabricantes de
'FRANCIA'
INSERT INTO ARTICULOS (ARTICULO, COD_FABRICANTE, PESO,
CATEGORIA)
SELECT 'ART1234', COD_FABRICANTE, 1.0, 'Primera'
FROM FABRICANTES
WHERE PAIS = 'FRANCIA';
-- Obtener el ID del artículo insertado
SELECT ARTICULO
FROM ARTICULOS
WHERE CATEGORIA = 'Primera' AND ARTICULO = 'ART1234';
-- Insertar 5 unidades de este artículo en todas las tiendas
INSERT INTO PEDIDOS (NIF, ARTICULO, COD_FABRICANTE, PESO,
CATEGORIA, FECHA_PEDIDO)
SELECT [Link], 'ART1234', A.COD_FABRICANTE, 1.0, 'Primera', SYSDATE
FROM TIENDAS T, ARTICULOS A
WHERE [Link] = 'ART1234';
2. Inserta un pedido de 20 unidades en la tienda '1111A' con
el artículo que mayor número de ventas haya realizado.
Aquí debes encontrar el artículo más vendido y luego insertar un
pedido de 20 unidades en la tienda 1111A.
sql
Copiar código
-- Encontrar el artículo con mayor número de ventas
SELECT ARTICULO, SUM(CANTIDAD) AS TOTAL_VENDIDO
FROM VENTAS
GROUP BY ARTICULO
ORDER BY TOTAL_VENDIDO DESC
FETCH FIRST 1 ROWS ONLY;
-- Insertar el pedido de 20 unidades para la tienda '1111A' con el
artículo más vendido
INSERT INTO PEDIDOS (NIF, ARTICULO, COD_FABRICANTE, PESO,
CATEGORIA, FECHA_PEDIDO)
SELECT '1111A', ARTICULO, COD_FABRICANTE, PESO, CATEGORIA,
SYSDATE
FROM ARTICULOS
WHERE ARTICULO = (SELECT ARTICULO
FROM VENTAS
GROUP BY ARTICULO
ORDER BY SUM(CANTIDAD) DESC
FETCH FIRST 1 ROWS ONLY);
3. Da de alta una tienda en la provincia de 'MADRID' y
abastécela con 20 unidades de cada uno de los artículos
existentes.
Primero debes insertar la tienda en la tabla TIENDAS, luego
abastécela con 20 unidades de todos los artículos existentes.
sql
Copiar código
-- Insertar la tienda en Madrid
INSERT INTO TIENDAS (NIF, PROVINCIA)
VALUES ('9999M', 'MADRID');
-- Abastecer la tienda con 20 unidades de todos los artículos
INSERT INTO PEDIDOS (NIF, ARTICULO, COD_FABRICANTE, PESO,
CATEGORIA, FECHA_PEDIDO)
SELECT '9999M', ARTICULO, COD_FABRICANTE, PESO, CATEGORIA,
SYSDATE
FROM ARTICULOS;
4. Da de alta dos tiendas en la provincia de 'SEVILLA' y
abastécelas con 30 unidades de artículos de la marca de
fabricante 'GALLO'.
Primero, debes insertar las dos tiendas en la provincia de SEVILLA y
luego abastécelas con 30 unidades de artículos fabricados por
'GALLO'.
sql
Copiar código
-- Insertar dos tiendas en Sevilla
INSERT INTO TIENDAS (NIF, PROVINCIA)
VALUES ('1111S', 'SEVILLA');
INSERT INTO TIENDAS (NIF, PROVINCIA)
VALUES ('1112S', 'SEVILLA');
-- Abastecer ambas tiendas con 30 unidades de artículos del
fabricante 'GALLO'
INSERT INTO PEDIDOS (NIF, ARTICULO, COD_FABRICANTE, PESO,
CATEGORIA, FECHA_PEDIDO)
SELECT [Link], [Link], A.COD_FABRICANTE, [Link],
[Link], SYSDATE
FROM TIENDAS T
JOIN ARTICULOS A ON A.COD_FABRICANTE = (SELECT
COD_FABRICANTE FROM FABRICANTES WHERE PAIS = 'GALLO')
WHERE [Link] = 'SEVILLA';
5. Realiza una venta para todas las tiendas de 'TOLEDO' de 10
unidades en los artículos de 'Primera' categoría.
Aquí se deben realizar ventas en todas las tiendas de TOLEDO para
artículos de categoría 'Primera'.
sql
Copiar código
-- Realizar venta de 10 unidades de artículos 'Primera' para las
tiendas de Toledo
INSERT INTO VENTAS (NIF, ARTICULO, CANTIDAD, FECHA_VENTA)
SELECT [Link], [Link], 10, SYSDATE
FROM TIENDAS T
JOIN ARTICULOS A ON [Link] = 'Primera'
WHERE [Link] = 'TOLEDO';
6. Para aquellos artículos de los que se hayan vendido más de
30 unidades, realiza un pedido de 10 unidades para la tienda
con NIF '5555-B' con la fecha actual.
Primero, debes verificar cuáles artículos han tenido más de 30
unidades vendidas y luego realizar un pedido de 10 unidades para la
tienda 5555-B.
sql
Copiar código
-- Insertar pedido de 10 unidades para la tienda '5555-B' para
artículos con ventas superiores a 30 unidades
INSERT INTO PEDIDOS (NIF, ARTICULO, COD_FABRICANTE, PESO,
CATEGORIA, FECHA_PEDIDO)
SELECT '5555-B', ARTICULO, COD_FABRICANTE, PESO, CATEGORIA,
SYSDATE
FROM ARTICULOS
WHERE ARTICULO IN (SELECT ARTICULO
FROM VENTAS
GROUP BY ARTICULO
HAVING SUM(CANTIDAD) > 30);
7. Cambia los datos de la tienda con NIF '1111-A' igualándolos
a los de la tienda con NIF '2222-A'.
Para este ejercicio, se realiza una actualización de los datos de la
tienda con NIF 1111-A para que coincidan con los de la tienda 2222-A.
sql
Copiar código
-- Cambiar los datos de la tienda '1111-A' igualándolos a los de '2222-
A'
UPDATE TIENDAS
SET PROVINCIA = (SELECT PROVINCIA FROM TIENDAS WHERE NIF =
'2222-A')
WHERE NIF = '1111-A';
8. Cambia todos los artículos de 'Primera' categoría a
'Segunda' categoría del país 'ITALIA'.
Aquí se actualizan los artículos de categoría 'Primera' a 'Segunda' en
los artículos cuyo fabricante es de 'ITALIA'.
sql
Copiar código
-- Actualizar artículos de 'Primera' categoría a 'Segunda' para los
fabricantes de Italia
UPDATE ARTICULOS
SET CATEGORIA = 'Segunda'
WHERE CATEGORIA = 'Primera' AND COD_FABRICANTE IN
(SELECT COD_FABRICANTE FROM FABRICANTES WHERE PAIS =
'ITALIA');
9. Modifica aquellos pedidos en los que la cantidad pedida sea
superior a las existencias del artículo, asignando el 20% de
las existencias a la cantidad que se ha pedido.
Este ejercicio requiere hacer una verificación de las existencias y
luego ajustar las cantidades.
sql
Copiar código
-- Asignar el 20% de las existencias al pedido si la cantidad pedida es
mayor
UPDATE PEDIDOS P
SET [Link] = [Link] * 0.2
WHERE [Link] > (SELECT EXISTENCIAS FROM ARTICULOS
WHERE ARTICULO = [Link]);
10. Elimina aquellas tiendas que no han realizado ventas.
Se elimina de la tabla TIENDAS aquellas tiendas que no tengan ventas
asociadas.
sql
Copiar código
-- Eliminar tiendas sin ventas
DELETE FROM TIENDAS
WHERE NIF NOT IN (SELECT DISTINCT NIF FROM VENTAS);
11. Elimina los artículos que no hayan tenido ni compras ni
ventas.
Este ejercicio elimina los artículos que no han tenido compras ni
ventas registradas.
sql
Copiar código
-- Eliminar artículos sin compras ni ventas
DELETE FROM ARTICULOS
WHERE ARTICULO NOT IN (SELECT DISTINCT ARTICULO FROM
PEDIDOS)
AND ARTICULO NOT IN (SELECT DISTINCT ARTICULO FROM VENTAS);
12. Borra los pedidos de 'Primera' categoría cuyo país de
procedencia sea 'BÉLGICA'.
Elimina los pedidos cuyo artículo sea de categoría 'Primera' y su
fabricante sea de 'BÉLGICA'.
sql
Copiar código
-- Eliminar pedidos de 'Primera' categoría y país 'BÉLGICA'
DELETE FROM PEDIDOS
WHERE CATEGORIA = 'Primera' AND COD_FABRICANTE IN
(SELECT COD_FABRICANTE FROM FABRICANTES WHERE PAIS =
'BÉLGICA');
13. Borra los pedidos que no tengan tienda.
Elimina los pedidos que no están asociados a ninguna tienda.
sql
Copiar código
-- Eliminar pedidos sin tienda
DELETE FROM PEDIDOS
WHERE NIF NOT IN (SELECT NIF FROM TIENDAS);
14. Resta uno a las unidades de los últimos pedidos de la
tienda con NIF '5555-B'.
Para esto, actualizamos la cantidad de los últimos pedidos de la
tienda 5555-B restando 1 unidad.
sql
Copiar código
-- Restar 1 a las unidades de los últimos pedidos de la tienda '5555-B'
UPDATE PEDIDOS
SET CANTIDAD = CANTIDAD - 1
WHERE NIF = '5555-B' AND FECHA_PEDIDO = (SELECT
MAX(FECHA_PEDIDO) FROM PEDIDOS WHERE NIF = '5555-B');