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

Tabla relación

Estas en el tema de Tabla relación en el foro de Mysql en Foros del Web. Ahora iniciando con algo del diseño de bases de datos decentes, me he encontrado con un pequeño problema de relación, posiblemente podrá ser un problema ...
  #1 (permalink)  
Antiguo 02/10/2009, 22:57
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 16 años, 5 meses
Puntos: 53
Tabla relación

Ahora iniciando con algo del diseño de bases de datos decentes, me he encontrado con un pequeño problema de relación, posiblemente podrá ser un problema también de estructura, pero lo dejaré sólo en problema de relación.

El punto:

Tengo una tabla relación, simplemente con motivos de aprendizaje, es decir, tiene sólo dos campos, dos llaves foráneas de una tabla en la que se registra un código y un nombre, detalle o identificador (no especifico), entonces... El único problema hasta ahora presente es lograr generar una consulta que a partir de los datos en la tabla con la llave principal me genere un resultado de ambos nombres, detalles o identificadores(aún no especificados).

Detalles de la tablas:

Para una tabla A
  • codA
  • nomA

Donde codA es un código autoincremental y nomA es el nombre, detalle o identificador no especificado.

Para una tabla B
  • relCodA
  • relCodA2

Donde relCodA y relCodA2 son llaves foráneas de codA.

Teniendo las anteriores tablas, ¿de qué forma es posible relacionar los dos valores de la tabla B para obtener el nomA almacenado en la tabla A?

Mi consulta, para hacer una pequeña idea:

Código:
SELECT nomA, relCodA FROM A, B WHERE A.codA = B.relCodA;
Ello sería sólo para una relación entre relCodA y el nomA asociado al código. Pero... En pocas palabras, necesitaré los dos nombres en el mismo resultado.
  #2 (permalink)  
Antiguo 03/10/2009, 12:39
 
Fecha de Ingreso: mayo-2009
Mensajes: 76
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Tabla relación

explica bien quieres retornar dos veces el nombre de A,, e igual la tabla B con la misma tabla B

creo que nadie te ha entendido.
  #3 (permalink)  
Antiguo 03/10/2009, 13:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Tabla relación

Hay que volver a llamar la tabla A con un alias, digamos C, para poder relacionarlo con la segunda clave de la tabla B.
Además, en el contexto de los nombres usados en la tabla B, no se debe usar la coma como forma de unirla, ya que los nombres de los campos entre A y B son diferentes, y el resultado sería un producto cartesiano. En lugar de ello, debe usarse INNER JOIN y establecer contra qué campos se hace la igualación (ver en el manual de referencia el uso del JOIN).
Código SQL:
Ver original
  1. SELECT nomA, relCodA
  2. FROM A INNER JOIN B ON A.codA = B.relCodA INNER JOIN A C ON C.codA = B.relCodA2;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 13:50.