Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

consulta compleja en Mysql con varias tablas

Estas en el tema de consulta compleja en Mysql con varias tablas en el foro de Mysql en Foros del Web. hola a todos, estoy en dimela con una consulta para la cual necesito la union de varias tablas en especial 3... le agradezco a la ...
  #1 (permalink)  
Antiguo 06/09/2011, 20:47
 
Fecha de Ingreso: septiembre-2011
Ubicación: Colombia
Mensajes: 17
Antigüedad: 12 años, 7 meses
Puntos: 2
Pregunta consulta compleja en Mysql con varias tablas

hola a todos, estoy en dimela con una consulta para la cual necesito la union de varias tablas en especial 3... le agradezco a la persona que me pueda colaborar le estaria muy agradecido la estructura de las tablas es esta:


CREATE TABLE `persona` (
`IdPersona` int(11) unsigned NOT NULL AUTO_INCREMENT,
`ApellidoP` varchar(25) NOT NULL DEFAULT '',
`ApellidoM` varchar(25) NOT NULL DEFAULT '',
`Nombre` varchar(50) NOT NULL DEFAULT '',
`Sexo` int(2) unsigned NOT NULL DEFAULT '0',
`Documento` varchar(20) NOT NULL DEFAULT '',
`NumeroDoc` varchar(15) DEFAULT '',
`FechaNacimiento` date DEFAULT NULL,
`DptoNacimiento` int(3) NOT NULL DEFAULT '0',
`McpioNacimiento` int(3) NOT NULL DEFAULT '0',
`FechaBautismo` date DEFAULT NULL,
`LibroBautismo` int(3) unsigned DEFAULT NULL,
`FolioBautismo` int(4) unsigned DEFAULT NULL,
`ActaBautismo` int(4) unsigned DEFAULT NULL,
`DptoBautismo` int(3) NOT NULL DEFAULT '0',
`McipioBautismo` int(3) NOT NULL DEFAULT '0',
`IdParroquiaBautismo` int(11) unsigned DEFAULT NULL,
`Domicilio` varchar(100) DEFAULT '',
`DptoDomicilio` int(3) NOT NULL DEFAULT '0',
`McpioDomicilio` int(3) NOT NULL DEFAULT '0',
`Telefono` int(7) unsigned DEFAULT '0',
`Celular` int(10) unsigned DEFAULT '0',
`EMail` varchar(100) DEFAULT '',
`Observaciones` text,
PRIMARY KEY (`IdPersona`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

CREATE TABLE `departamento` (
`IdDpto` int(3) unsigned NOT NULL AUTO_INCREMENT,
`Indicativo` int(1) unsigned DEFAULT '0',
`NombreDpto` varchar(80) NOT NULL DEFAULT '',
PRIMARY KEY (`IdDpto`)
) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=latin1;

CREATE TABLE `municipio` (
`IdMcpio` int(4) unsigned NOT NULL AUTO_INCREMENT,
`IdDpto` int(3) unsigned NOT NULL DEFAULT '0',
`CodigoMcpio` int(5) unsigned NOT NULL DEFAULT '0',
`NombreMcpio` varchar(80) NOT NULL DEFAULT '',
PRIMARY KEY (`IdMcpio`)
) ENGINE=InnoDB AUTO_INCREMENT=1153 DEFAULT CHARSET=latin1;


la consulta que estoy tratando de sacar es que me muestre todos los campos de la persona y también el nombre del departamento y municipio de nacimiento, bautismo y domicilio de la persona, he intentado de varias formas pero no he logrado sacar la consulta...

Última edición por hendaviher; 06/09/2011 a las 20:49 Razón: faltaba informacion
  #2 (permalink)  
Antiguo 07/09/2011, 01:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: consulta compleja en Mysql con varias tablas

Manual JOIN

Código MySQL:
Ver original
  1.    FROM (((personas p
  2.                   INNER JOIN departamento dn
  3.                     ON p.DptoNacimiento=dn.IdDpto)
  4.                   INNER JOIN departamento db
  5.                     ON p.DptoBautismo=db.IdDpto)
  6.                   INNER JOIN municipio mn
  7.                     ON p.McpioNacimiento=mn.IdMcpio)  
  8. ...

Te dejo el resto para ti.

Definir unas FK te ayudaria
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 07/09/2011, 09:45
 
Fecha de Ingreso: septiembre-2011
Ubicación: Colombia
Mensajes: 17
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: consulta compleja en Mysql con varias tablas

compañero muchas gracias, no tengo mucho conocimiento con los inner join, no coloque fk porque los valores las tablas departamento y municipio nunca cambia y me aseguro por programacion que tengan los valores correctos... muy agradecido...

la consulta me quedo de esta manera:

Código SQL:
Ver original
  1. SELECT *
  2. FROM ((((((persona p INNER JOIN departamento dn ON p.DptoNacimiento=dn.IdDpto)
  3. INNER JOIN municipio mn ON p.McpioNacimiento=mn.IdMcpio)
  4. INNER JOIN departamento db ON p.DptoBautismo=db.IdDpto)
  5. INNER JOIN municipio mb ON p.McpioBautismo=mb.IdMcpio)
  6. INNER JOIN departamento dd ON p.DptoDomicilio=dd.IdDpto)
  7. INNER JOIN municipio md ON p.McpioDomicilio=md.IdMcpio)

Etiquetas: campos, tabla, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:56.