Tengo 4 tablas (nombres, domicilios, paises, rel_nombres_paises). Creo que es claro que datos guardan cada tabla. La tabla rel_nombres_paises, como su nombre lo indica, relaciona nombres con países.
Quiero hacer una, y solo una, consulta que me muestra los nombres de todas las personas que vivan en, por ejemplo, Argentina.
Aquí hay un código de ejemplo:
Código:
Para ver como funciona, copien y peguen el código en: drop table if exists nombres; drop table if exists domicilios; drop table if exists paises; drop table if exists rel_nombres_paises; create table nombres( idNombres int(7) auto_increment, nombre varchar(30), primary key(idNombres) ); create table domicilios( idDomicilios int(7) auto_increment, relIdNombres int(7), domicilio varchar(30), primary key(idDomicilios) ); create table paises( idPaises int(7) auto_increment, pais varchar(15), primary key(idPaises) ); create table rel_nombres_paises( idRNP int(7) auto_increment, relIdNombres int(7), relIdPaises int(7), primary key(idRNP) ); insert into nombres(nombre) values('Juan Perez'); insert into domicilios(relIdNombres, domicilio) values(last_insert_id(),'Juanjo Agirre 268'); insert into paises(pais) values('Argentina'); insert into rel_nombres_paises(relIdNombres, relIdPaises) select nombres.idNombres, paises.idPaises from nombres, paises where nombres.nombre = 'Juan Perez' and paises.pais = 'Argentina'; insert into nombres(nombre) values('Juana Aguirre'); insert into domicilios(relIdNombres, domicilio) values(last_insert_id(),'San Martin 588'); insert into paises(pais) values('Colombia'); insert into rel_nombres_paises(relIdNombres, relIdPaises) select nombres.idNombres, paises.idPaises from nombres, paises where nombres.nombre = 'Juana Aguirre' and paises.pais = 'Colombia'; insert into nombres(nombre) values('Marcela Ana'); insert into domicilios(relIdNombres, domicilio) values(last_insert_id(),'Bolivar 776'); insert into paises(pais) values('Venezuela'); insert into rel_nombres_paises(relIdNombres, relIdPaises) select nombres.idNombres, paises.idPaises from nombres, paises where nombres.nombre = 'Marcela Ana' and paises.pais = 'Venezuela'; select * from nombres; select * from domicilios; select * from paises; select * from rel_nombres_paises;
http://mysqlya.com.ar/simulador/simulador.php?cod=7&punto=2
Luego, click en Ejecutar comandos SQL
En el final debería incluirse la dichosa consulta.
Intenté repetidas veces hacer una función (con php) que me permita hacerlo, pero no logré.
Lo que pido no es difícil de hacer con mas de una consulta, pero me gustaría aligerar el trámite y realizarlo consultando solo una vez la base de datos.
Desde ya gracias y espero haberme expresado claramente.