Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/07/2008, 10:56
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: consulta multiple en una sola

Cita:
Iniciado por killerangel Ver Mensaje
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...

Última edición por jurena; 17/07/2008 a las 23:08