0% found this document useful (0 votes)
18 views8 pages

Carga Datosp1.sql

The document contains SQL scripts for inserting data into various tables in a database, including product, commercial format, article, publication, and customer details. It also includes the creation of sequences and triggers to automatically generate IDs for new entries in these tables. The scripts ensure data integrity and proper relationships between different entities in the database.

Uploaded by

elena
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views8 pages

Carga Datosp1.sql

The document contains SQL scripts for inserting data into various tables in a database, including product, commercial format, article, publication, and customer details. It also includes the creation of sequences and triggers to automatically generate IDs for new entries in these tables. The scripts ensure data integrity and proper relationships between different entities in the database.

Uploaded by

elena
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 8

/*INSERCI�N DE DATOS*/

/*El orden al insertar los datos es importante ya que algunas inserciones dependen
de los valores de otras.*/

/*TABLA PRODUCTO*/
INSERT INTO fsdb189.producto(nombre, coffea, varietal, origen, tipo_tostado,
descafeinado)
SELECT DISTINCT
product,
coffea,
varietal,
origin,
CASE
WHEN roasting = 'high-roast' THEN 'torrefacto'
WHEN roasting = 'blend' THEN 'mezcla'
ELSE 'natural'
END AS tipo_tostado,
CASE
WHEN decaf = 'yes' THEN 1
WHEN decaf = 'no' THEN 0
ELSE 1
END AS descafeinado
FROM fsdb.catalogue
WHERE roasting IN ('high-roast', 'blend', 'natural')
AND decaf IN ('yes', 'no');

/*TABLA FORMATO_COMERCIALIZACION*/
INSERT INTO fsdb189.formato_comercializacion(tipo, envasado)
SELECT DISTINCT tipo, envasado
FROM (
SELECT
CASE
WHEN format = 'prepared' THEN 'preparado'
WHEN format = 'capsules' THEN 'c�psulas'
WHEN format = 'ground' THEN 'molido'
WHEN format = 'raw bean' THEN 'grano crudo'
WHEN format = 'roasted bean' THEN 'grano tostado'
WHEN format = 'freeze dried' THEN 'liofilizado'
ELSE 'molido'
END AS tipo,
packaging AS envasado
FROM fsdb.catalogue
WHERE format IN ('prepared', 'capsules', 'ground', 'raw bean', 'roasted bean',
'freeze dried')
) c
WHERE NOT EXISTS (
SELECT 1
FROM fsdb189.formato_comercializacion fc
WHERE fc.tipo = c.tipo
AND fc.envasado = c.envasado
);

/*TABLA PRODUCTO_FORMATO_COMERCIALIZACI�N*/
INSERT INTO fsdb189.producto_formato_comercializacion(producto,
formato_comercializacion)
SELECT p.id, f.id
FROM fsdb.catalogue c
JOIN producto p ON p.nombre = c.product
JOIN formato_comercializacion f ON f.tipo = 'grano crudo' -- Aqu� especifica el
tipo de formato de comercializaci�n que deseas relacionar
WHERE c.roasting IN ('high-roast', 'blend', 'natural')
AND c.decaf IN ('yes', 'no');

/*TABLA ART�CULO*/
INSERT INTO fsdb189.articulo(codigo_barras, descripcion, precio, cantidad_stock,
stock_minimo, stock_maximo)
SELECT DISTINCT
barcode,
packaging,
CASE WHEN REGEXP_LIKE(cost_price, '^\d+(\.\d+)?$') THEN TO_NUMBER(cost_price)
ELSE 5 END,
cur_stock,
min_stock,
max_stock
FROM fsdb.catalogue ;
/*TABLA PUBLICACION*/
INSERT INTO fsdb189.publicacion(puntuacion, titulo, likes, comentarios,
valoraciones, cliente, fecha_pub, hora_pub)
SELECT DISTINCT
score,
title,
likes,
comentarios,
valoraciones,
cliente,

/*TABLA DIRECCI�N*/
INSERT INTO fsdb189.direccion(tipo_de_via,nombre_via, num_inm, num_bloque,
escalera, piso, puerta, codigo_postal, localidad, pais)
SELECT
dliv_waytype,
dliv_wayname,
dliv_gate,
dliv_block,
dliv_stairw,
dliv_floor,
dliv_door,
dliv_zip,
dliv_town,
dliv_country
FROM fsdb.trolley ;

/*TABLA PROVEEDOR*/
INSERT INTO fsdb189.proveedor(nombre,cif, nombre_completo, correo,
telefono,cuenta_bancaria, direccion_postal, pais)
SELECT DISTINCT
supplier,
prov_taxid,
prov_person,
prov_email,
prov_mobile,
prov_bankacc,
prov_address,
prov_country
FROM fsdb.catalogue
WHERE supplier IS NOT NULL;

/*TABLA PEDIDO*/
INSERT INTO fsdb189.pedido(fecha, hora, cantidad, articulo, estado, precio,
fecha_ent, hora_ent)
SELECT DISTINCT
TO_DATE(t.orderdate, 'YYYY-MM-DD'),
t.ordertime,
t.quantity,
t.barcode,
'draft' AS estado_default,
t.base_price,
TO_DATE(t.dliv_date, 'YYYY-MM-DD'),
t.dliv_time
FROM fsdb.trolley t
JOIN fsdb189.articulo a ON t.barcode = a.codigo_barras;

/*TABLA TARJETA_CREDITO*/
INSERT INTO fsdb189.tarjeta_credito(numero, titular, compania, fecha_venc)
SELECT DISTINCT
card_number,
card_holder,
card_company,
CASE
WHEN REGEXP_LIKE(card_expiratn, '^[0-9]{4}$') THEN TO_DATE('01/' ||
SUBSTR(card_expiratn, 1, 2) || '/' || '20' || SUBSTR(card_expiratn, 3, 2),
'DD/MM/YYYY')
ELSE TO_DATE('01/10/2026', 'DD/MM/YYYY')
END AS fecha_venc
FROM fsdb.trolley
WHERE card_number IS NOT NULL;

/*TABLA TIPO_PAGO*/
INSERT INTO fsdb189.tipo_pago(nombre)
SELECT DISTINCT
CASE
WHEN payment_type = �bank transfer� THEN �transferencia bancaria�
WHEN payment_type = �credit card� THEN �tarjeta de cr�dito�
ELSE �COD�
END AS nombre
FROM fsdb.trolley
WHERE payment_type IN(�bank transfer�, �COD�, �credit card�);

/*TABLA OFERTA_ART�CULOS*/
INSERT INTO fsdb189.oferta_articulos(proveedor, articulo, coste)
SELECT
c.prov_taxid AS proveedor,
c.barcode AS articulo,
CASE
WHEN REGEXP_LIKE(c.cost_price, '^\d+(\.\d+)?$') THEN
TO_NUMBER(c.cost_price)
ELSE 5
END AS coste
FROM fsdb.catalogue c
WHERE prov_taxid IS NOT NULL;

/*TABLA CLIENTE*/
INSERT INTO fsdb189.cliente(correo, telefono, nombre, apellido1, apellido2,
datos_tarjeta, direccion_envio, direccion_facturacion, fecha_rel)
SELECT DISTINCT
client_email,
client_mobile,
client_name,
client_surn1,
client_surn2,
card_number,
dliv_zip AS direccion_envio,
bill_zip AS direccion_facturacion,
reg_date
FROM fsdb.trolley t
JOIN direccion ON t.dliv_zip = direccion.id
JOIN direccion ON t.bill_zip = direccion.id
JOIN tarjeta_credito ON t.card_number = tarjeta_credito.numero;

/*TABLA CLIENTE_REGISTRADO*/
INSERT INTO fsdb189.cliente_registrado(username, contrasena, fecha_reg, hora_reg,
cliente, pref_contacto)
SELECT DISTINCT
t.username,
t.user_passw,
TO_DATE(t.reg_date, 'YYYY/MM/DD') AS fecha_reg,
t.reg_time,
c.id,
'correo electr�nico' AS pref_contacto
FROM fsdb.trolley t, cliente c
WHERE NOT EXISTS (
SELECT 1
FROM fsdb189.cliente_registrado cr
WHERE cr.username = t.username)
AND username IS NOT NULL
AND NOT EXISTS(
SELECT 1
FROM fsdb189.cliente_registrado cr
WHERE cr.cliente = c.id);

/*TABLA PEDIDO_CLIENTE*/
INSERT INTO fsdb189.pedido_cliente(cliente,fecha,direccion)
SELECT DISTINCT
c.id,
TO_DATE(t.orderdate, �YYYY/MM/DD�) AS fecha,
d.id
FROM fsdb.trolley t, direccion d, cliente c;
/*TABLA ARTICULO_PEDIDO_CLIENTE */
INSERT INTO fsdb189.articulo_pedido_cliente(cliente, fecha, direccion, articulo,
cantidad, tipo_pago, tarjeta_cred, fecha_entrega, precio_unitario, precio_total)
SELECT DISTINCT
u.id,
l.fecha,
s.direccion,
t.barcode,
t.quantity,
t.payment_tipe
n.id,
t.dliv_date,
t.base_price,
c.coste_price
FROM fsdb.trolley t, tarjeta_credito n, fsdb.catalogue c, cliente u, pedido l,
direccion s
WHERE p.cliente IS NOT NULL
AND p.fecha IS NOT NULL
AND p.direccion IS NOT NULL
AND t.barcode IS NOT NULL
AND t.quantity IS NOT NULL
AND t.payment_type IS NOT NULL
AND n.id IS NOT NULL
AND t.dliv_date IS NOT NULL
AND t.base_price IS NOT NULL
AND c.coste_price IS NOT NULL;

/*TABLA DESCUENTO */
FROM fsdb.trolley, cliente;
INSERT INTO fsdb189.descuento(porcentaje, fecha_cad, cliente)
SELECT DISTINCT
discount,
�un mes de validaci�n� AS fecha_cad,
c.id AS cliente
FROM fsdb.trolley t, cliente c
WHERE discount <> '0 %'
GROUP BY discount, c.id;

/*TABLA VALORACION*/
INSERT INTO fsdb189.valoracion(producto, cliente, valoracion)
SELECT DISTINCT
c.codigo_barras,
t.id,
score
FROM fsdb.posts, articulo c, cliente t;

/*TABLA COMENTARIO*/
INSERT INTO fsdb189.comentario(producto, referencia, cliente, descripcion)
SELECT DISTINCT
p.id,
d.codigo_barras,
c.id,
text
FROM cliente c, articulo d, producto p, fsdb.posts;

/*TABLA PUBLICACION*/
INSERT INTO fsdb189.publicacion(puntuacion, titulo, likes, comentarios,
valoraciones, cliente, fecha_pub, hora_pub)
score,
title,
likes,
c.id,
v.id,
t.id,
TO_DATE(t.post_date, 'YYYY-MM-DD') AS fecha_pub,
post_time,
FROM fsdb.posts, comentario c, valoracion v, cliente t
WHERE NOT EXISTS (
SELECT 1
FROM fsdb189.publicacion cr
WHERE cr.title = title)

########################################################################
/*Creaci�n secuencia auto_increment*/
CREATE SEQUENCE creacion_id
START WITH 1
INCREMENT BY 1
NOMAXVALUE;

/*Crear triggers para que los id sean automaticos*/


/*TABLA PRODUCTO*/
CREATE OR REPLACE TRIGGER trigger_id
BEFORE INSERT ON producto
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/

/* TABLA FORMATO_COMERCIALIZACION */
CREATE OR REPLACE TRIGGER trigger_formato_comercializacion
BEFORE INSERT ON formato_comercializacion
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/

/* TABLA PEDIDO*/
CREATE OR REPLACE TRIGGER trigger_pedido
BEFORE INSERT ON formato_pedido
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/

/* TABLA OFERTA_ARTICULOS*/
CREATE OR REPLACE TRIGGER trigger_oferta_articulos
BEFORE INSERT ON oferta_articulos
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/

/* TABLA CLIENTE */
CREATE OR REPLACE TRIGGER trigger_cliente
BEFORE INSERT ON cliente
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/*TABLA CLIENTE_REGISTRADO*/
CREATE OR REPLACE TRIGGER trigger_cliente_registrado
BEFORE INSERT ON cliente_registrado
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/* TABLA PEDIDO_CLIENTE */
CREATE OR REPLACE TRIGGER trigger_pedido_cliente
BEFORE INSERT ON oferta_pedido_cliente
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/

/*TABLA TIPO_PAGO*/
CREATE OR REPLACE TRIGGER trigger_tipo_pago
BEFORE INSERT ON tipo_pago
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/

/* TABLA ARTICULO_PEDIDO_CLIENTE*/
CREATE OR REPLACE TRIGGER trigger_articulo_pedido_cliente
BEFORE INSERT ON articulo_pedido_cliente
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/

/* TABLA DIRECCION */
CREATE OR REPLACE TRIGGER trigger_direccion
BEFORE INSERT ON direccion
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/* TABLA DESCUENTO */
CREATE OR REPLACE TRIGGER trigger_descuento
BEFORE INSERT ON descuento
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/* TABLA VALORACION */
CREATE OR REPLACE TRIGGER trigger_valoracion
BEFORE INSERT ON valoracion
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/* TABLA PUBLICACION */
CREATE OR REPLACE TRIGGER trigger_publicacion
BEFORE INSERT ON publicacion
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/* TABLA COMENTARIO */
CREATE OR REPLACE TRIGGER trigger_comentario
BEFORE INSERT ON comentario
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/

Alejandra Castuera Garc�a 100499172


Elena Recio �lvarez 100495725

You might also like