Cita:
Iniciado por killerangel Hola foro 'wen' dia a todos....
tengo 3 tablas: departamento, provincia y distrito, en relacion de pertenencia de mayor a menor (distrito de una provincia, etc..)
en la tabla distrito (Dist_cod) tengo el codigo de departamento (Dpto_cod) y provincia (Prov_cod)
necesito encontrar el nombre de la departamento, provincia y distrito de un usuario entonces obtengo el id de dpo, prov y dist y para saber sus nombres tendría q hacer 3 select uno para cada taba ubicandolos por el id de cada una...
"SELECT dpto_nom FROM departamento WHERE Dpto_cod=".$Dpto_cod;
"SELECT prov_nom FROM provincia WHERE Dpto_cod=".$Dpto_cod.' AND Prov_cod='.$Prov_cod;
"SELECT dist_nom FROM distrito WHERE Dpto_cod=".$Dpto_cod." AND Prov_cod=".$Prov_cod." AND Dist_cod=".$Dist_cod;
puedo hacer estos 3 select en uno solo que agilice el proceso de busqueda??
gracias
Creo que el código de Dpto. Dpto_cod debería estar incluido como FK en la tabla provincia. De esa manera conseguirías dos cosas: ahorrar espacio, pues has escrito ese código un número menor de veces que al guardarlo en la tabla distrito, y por otra parte podrías hacer una búsqueda de provincias del departamento, cosa que ahora no puedes hacer, puesto que no los has relacionado.
La estructura
departamento
-----------------
id_Depto PK
Departamento
provincia
------------
id_Provincia PK
Provincia
refid_Depto FK
distrito
---------
id_distrito PK
Distrito
refid_Provincia FK
usuario
---------
id_usuario PK
nombreusuario
refid_distrito FK
Imaginemos que buscas los datos del usuario cuyo id_usuario es el 5.
SELECT u.nombreusuario, d.Departamento, p.Provincia, di.distrito FROM departamento d INNER JOIN provincia p ON d.id_Depto = p.refid_Depto INNER JOIN distrito di ON p.id_Provincia = d.refid_Provincia INNER JOIN usuario u ON di.id_distrito = u.refid_distrito WHERE id_usuario = 5
Pero esta es la sintaxis con la estructura que te he propuesto.
Con lo que tienes
SELECT u.nombreusuario, d.Departamento, p.Provincia, di.distrito FROM distrito di INNER JOIN departamento d ON d.id_Depto = di.refid_Depto INNER JOIN provincia p ON p.id_Provincia = di.refid_Provincia INNER JOIN usuario u ON di.id_distrito = u.refid_distrito WHERE u.id_usuario = 5
Te recomiendo el cambio que te he propuesto, pero esta es la idea...