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

Como hacer 2 Join a la misma tabla

Estas en el tema de Como hacer 2 Join a la misma tabla en el foro de Mysql en Foros del Web. Hola! Tengo un problema, tengo la siguiente tabla: Código PHP: CREATE TABLE  IF  NOT EXISTS pajarito . dbUsuarios  (      ID INT AUTO_INCREMENT NOT NULL ,      NOMBRE VARCHAR ( 60 ) DEFAULT  NULL ...
  #1 (permalink)  
Antiguo 07/12/2011, 21:23
Myl
 
Fecha de Ingreso: agosto-2011
Mensajes: 61
Antigüedad: 12 años, 8 meses
Puntos: 3
Como hacer 2 Join a la misma tabla

Hola!

Tengo un problema, tengo la siguiente tabla:
Código PHP:
CREATE TABLE IF NOT EXISTS pajarito.dbUsuarios (
    
ID INT AUTO_INCREMENT NOT NULL,
    
NOMBRE VARCHAR(60) DEFAULT NULL,
    
ID_CIUDAD_ORIGEN INT DEFAULT NULL,
    
ID_CIUDAD_RECIDENCIA INT DEFAULT NULL,
    
ID_DEPORTE INT DEFAULT NULL,
    
ID_MUSICA INT DEFAULT NULL,
    
ID_ESCUELA_PRIMARIA INT DEFAULT NULL,
    
ID_ESCUELA_SECUNDARIA INT DEFAULT NULL,
    
ID_ED_SUPERIOR INT DEFAULT NULL,
    
ID_CARRERA INT DEFAULT NULL,
    
USERNAME VARCHAR(20NOT NULL,
    
PASSWORD VARCHAR(60NOT NULL,
    
PRIMARY KEY (ID),
    
UNIQUE (USERNAME)
)
ENGINE=InnoDB;

ALTER TABLE pajarito.dbUsuarios ADD CONSTRAINT FK_ESCUELA_P FOREIGN KEY(ID_ESCUELA_PRIMARIAREFERENCES pajarito.dbEscuela (ID);
ALTER TABLE pajarito.dbUsuarios ADD CONSTRAINT FK_ESCUELA_S FOREIGN KEY(ID_ESCUELA_SECUNDARIAREFERENCES pajarito.dbEscuela (ID); 
Y la Tabla:

Código PHP:
CREATE TABLE IF NOT EXISTS pajarito.dbEscuela (
    
ID INT AUTO_INCREMENT NOT NULL,
    
NOMBRE_ESCUELA VARCHAR(60) DEFAULT NULL,
    
PRIMARY KEY (ID)
)
ENGINE=InnoDB
Como veran, los campos ID_ESCUELA_PRIMARIA y ID_ESCUELA_SECUNDARIA hacen referencia a la tabla dbEscuela, pero no se como hacer un JOIN que llame dos veces a la misma tabla. Lo he intentado de varias formas.

De antemano muchas gracias.
  #2 (permalink)  
Antiguo 08/12/2011, 06:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Como hacer 2 Join a la misma tabla

Usas ALIAS:
Código MySQL:
Ver original
  1.     U.*, E1.*, E2.*
  2.     dbUsuarios U
  3.     INNER JOIN dbEscuela E1 ON U.ID_ESCUELA_PRIMARIA = E1.id
  4.     INNER JOIN dbEscuela E2 ON U.ID_ESCUELA_SECUNDARIA= E1.id;

Consejo para el buen diseño de base de datos:
- No uses como nombre de un ID solamente la palabra "ID". Usa una denominación que incluya el nombre de la tabla, como por ejemplo: "id_escuela", "id_usuario". No sólo es más claro, sino que puedes usar esa misma denominación cuando lo pongas como FK y evitar enormes textos que sólo complican la escritura de consultas, como "ID_ESCUELA_SECUNDARIA", sin necesidad de más.
- No uses prefijos como "db" para una tabla. Tienden a generar confusión, porque una tabla no es una base de datos, como parece sugerirlo el nombre "dbEscuela". En todo caso, el uso de prefijos en las tablas no es obligatorio, sólo es política de trabajo en sistemas muy grandes, donde ayuda a ubicar rápidamente las tablas (estoy trabajando con una base que tiene 914 tablas, allí si sirve).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campos, join, tabla
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 17:51.