80 - Subconsulta e insert


Primer problema:

Un comercio que vende artículos de librería y papelería almacena la información de sus ventas en una tabla llamada "facturas" y otra "clientes".

1- Elimine las tablas:

 -- Eliminamos la tabla facturas y todas las restricciones de integridad referencial
 -- que se refieren a claves primarias y únicas en la tabla (en el caso que existan)
 drop table facturas cascade constraints;
 drop table clientes;

2-Créelas:

 create table clientes(
  codigo number(5),
  nombre varchar2(30),
  domicilio varchar2(30),
  primary key(codigo)
 );

 create table facturas(
  numero number(6) not null,
  fecha date,
  codigocliente number(5) not null,
  total number(6,2),
  primary key(numero),
  constraint FK_facturas_cliente
   foreign key (codigocliente)
   references clientes(codigo)
 );

3-Ingrese algunos registros:

 insert into clientes values(1,'Juan Lopez','Colon 123');
 insert into clientes values(2,'Luis Torres','Sucre 987');
 insert into clientes values(3,'Ana Garcia','Sarmiento 576');
 insert into clientes values(4,'Susana Molina','San Martin 555');

 insert into facturas values(1200,'15/04/2017',1,300);
 insert into facturas values(1201,'15/04/2017',2,550);
 insert into facturas values(1202,'15/04/2017',3,150);
 insert into facturas values(1300,'20/04/2017',1,350);
 insert into facturas values(1310,'22/04/2017',3,100);

4- El comercio necesita una tabla llamada "clientespref" en la cual quiere almacenar el nombre y domicilio de aquellos clientes que han comprado hasta el momento más de 500 pesos en mercaderías. Elimine la tabla y créela con esos 2 campos:

 drop table clientespref;
 create table clientespref(
  nombre varchar2(30),
  domicilio varchar2(30)
 );

5- Ingrese los registros en la tabla "clientespref" seleccionando registros de la tabla "clientes" y "facturas"

6- Vea los registros de "clientespref" (2 registros)

Ver solución

 drop table facturas cascade constraints;
 drop table clientes;

 create table clientes(
  codigo number(5),
  nombre varchar2(30),
  domicilio varchar2(30),
  primary key(codigo)
 );

 create table facturas(
  numero number(6) not null,
  fecha date,
  codigocliente number(5) not null,
  total number(6,2),
  primary key(numero),
  constraint FK_facturas_cliente
   foreign key (codigocliente)
   references clientes(codigo)
 );

 insert into clientes values(1,'Juan Lopez','Colon 123');
 insert into clientes values(2,'Luis Torres','Sucre 987');
 insert into clientes values(3,'Ana Garcia','Sarmiento 576');
 insert into clientes values(4,'Susana Molina','San Martin 555');

 insert into facturas values(1200,'15/04/2017',1,300);
 insert into facturas values(1201,'15/04/2017',2,550);
 insert into facturas values(1202,'15/04/2017',3,150);
 insert into facturas values(1300,'20/04/2017',1,350);
 insert into facturas values(1310,'22/04/2017',3,100);

 drop table clientespref;
 create table clientespref(
  nombre varchar2(30),
  domicilio varchar2(30)
 );

 insert into clientespref
  select nombre,domicilio
   from clientes 
   where codigo in 
    (select codigocliente
     from clientes c
     join facturas f
     on codigocliente=codigo
     group by codigocliente
     having sum(total)>500);

 select *from clientespref;

 


Retornar