87 - Subconsultas con in |
Una empresa tiene registrados sus clientes en una tabla llamada "clientes", también tiene una tabla "ciudades" donde registra los nombres de las ciudades. 1- Cree la tabla "clientes" (codigo, nombre, domicilio, ciudad, codigociudad) y "ciudades" (codigo, nombre). Agregue una restricción "primary key" para el campo "codigo" de ambas tablas): drop table if exists ciudades; drop table if exists clientes; create table ciudades( codigo int auto_increment, nombre varchar(20), primary key (codigo) ); create table clientes ( codigo int auto_increment, nombre varchar(30), domicilio varchar(30), codigociudad smallint not null, primary key(codigo) ); 2- Ingrese algunos registros para ambas tablas: insert into ciudades (nombre) values('Cordoba'); insert into ciudades (nombre) values('Cruz del Eje'); insert into ciudades (nombre) values('Carlos Paz'); insert into ciudades (nombre) values('La Falda'); insert into ciudades (nombre) values('Villa Maria'); insert into clientes(nombre,domicilio,codigociudad) values ('Lopez Marcos','Colon 111',1); insert into clientes(nombre,domicilio,codigociudad) values ('Lopez Hector','San Martin 222',1); insert into clientes(nombre,domicilio,codigociudad) values ('Perez Ana','San Martin 333',2); insert into clientes(nombre,domicilio,codigociudad) values ('Garcia Juan','Rivadavia 444',3); insert into clientes(nombre,domicilio,codigociudad) values ('Perez Luis','Sarmiento 555',3); insert into clientes(nombre,domicilio,codigociudad) values ('Gomez Ines','San Martin 666',4); insert into clientes(nombre,domicilio,codigociudad) values ('Torres Fabiola','Alem 777',5); insert into clientes(nombre,domicilio,codigociudad) values ('Garcia Luis','Sucre 888',5); 3- Necesitamos conocer los nombres de las ciudades de aquellos clientes cuyo domicilio es en calle "San Martin", empleando subconsulta. select nombre from ciudades where codigo in (select codigociudad from clientes where domicilio like 'San Martin %'); 4- Obtenga la misma salida anterior pero empleando join. select distinct ci.nombre from ciudades as ci join clientes as cl on codigociudad=ci.codigo where domicilio like 'San Martin%'; 5- Obtenga los nombre de las ciudades de los clientes cuyo apellido no comienza con una letra específica, empleando subconsulta. select nombre from ciudades where codigo not in (select codigociudad from clientes where nombre like 'G%'); 6- Pruebe la subconsulta del punto 5 separada de la consulta exterior para verificar que retorna una lista de valores de un solo campo. select codigociudad from clientes where nombre like 'G%';