Comunidad de diseño web y desarrollo en internet online

Joins de 3 columnas a una misma columna de otra tabla

Citar            
MensajeEscrito el 08 Abr 2013 01:20 pm
Hola a todos, por favor alguien podría ayudarme con una consulta , sucede que que tengo una tabla llamada personas (id,ciudad1,ciudad2,ciudad3) y otra llamada ciudades (id,nombreciudad), pero el problema es que no se puede hacer un join normal para obtener el nombre respectivo de las 3 ciudades, solo se puede recuperar 1, como sería esta consulta, cualquier ayuda gracias.

Por sebastiancb

62 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Abr 2013 04:26 pm
Las ciudades de la persona debe estar en otra tabla, ya que es un grupo repetitivo (relación uno a muchos). Así sí podrás hacer lo que quieres.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 08 Abr 2013 05:59 pm
SELECT ciudad1, ciudad2, ciudad3, nombreciudad
FROM personas
INNER JOIN ciudades
ON personas.ciudad1 = ciudades.nombreciudad


Algo asi pero realmente necesitamos la estructura completa de la tabla, quiza este mal diseñada.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox
Citar            
MensajeEscrito el 08 Abr 2013 07:19 pm
La estructura es esta aunque solo con dos ciudades, pero al hacer el join necesito el nombre de las dos ciudades.
Gracias

CREATE TABLE `ciudades` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ciudad` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*Data for the table `ciudades` */

/*Table structure for table `personas` */

DROP TABLE IF EXISTS `personas`;

CREATE TABLE `personas` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nombre` varchar(50) DEFAULT NULL,
`ciudad_origen` int(11) DEFAULT NULL,
`ciudad_residencia` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK_personas` (`ciudad_origen`),
KEY `FK_personas1` (`ciudad_residencia`),
CONSTRAINT `FK_personas1` FOREIGN KEY (`ciudad_residencia`) REFERENCES `ciudades` (`id`),
CONSTRAINT `FK_personas` FOREIGN KEY (`ciudad_origen`) REFERENCES `ciudades` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Por sebastiancb

62 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Abr 2013 09:55 pm
A quien le sirva aqui está:
SELECT personas.nombre ,c1.ciudad AS ciudadorigen, c2.ciudad AS ciudadresidencia
FROM ciudades c1, ciudades c2, personas
WHERE c1.id = personas.ciudad_origen AND c2.id = personas.ciudad_residencia

Por sebastiancb

62 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.