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

Consulta SQL: Campo de tabla A está relacionado con 3 campos de la tabla B

Estas en el tema de Consulta SQL: Campo de tabla A está relacionado con 3 campos de la tabla B en el foro de Bases de Datos General en Foros del Web. Amigos del foro, necesito un favor suyo, es una consulta sql con la que no he podido y no estoy seguro si lo que les ...
  #1 (permalink)  
Antiguo 28/06/2010, 16:21
 
Fecha de Ingreso: febrero-2010
Mensajes: 2
Antigüedad: 14 años, 2 meses
Puntos: 0
Consulta SQL: Campo de tabla A está relacionado con 3 campos de la tabla B

Amigos del foro, necesito un favor suyo, es una consulta sql con la que no he podido y no estoy seguro si lo que les voy a preguntar sea posible.

Tengo 2 tablas:

Color
Ropa


Tabla Color

Idcolor nombrecolor
1 Rojo
2 Azul
3 Verde
4 Blanco
etc....


Tabla Ropa

Idropa colorpantalon colorcamisa colorchaqueta
1 1 2 3
2 2 3 4
3 1 2 2
4 2 3 2
etc....


Lo que quiero es una consulta que me traiga los siguientes datos:


Idropa nombrecolorpantalon nombrecolorcamisa nombrecolorchaqueta
1 Rojo Azul Verde
2 Azul Verde Blanco
3 Rojo Azul Azul
4 Azul Verde Azul
etc....

Gracias de antemano por su valiosa ayuda.
  #2 (permalink)  
Antiguo 28/06/2010, 19:43
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: Consulta SQL: Campo de tabla A está relacionado con 3 campos de la tabla B

Debes hacer una invocación triple a la tabla de colores:
Código SQL:
Ver original
  1. SELECT
  2.    Idropa,
  3.    C1.nombrecolor color_pantalon,
  4.    C2.nombrecolor color_camisa,
  5.    C3.nombrecolor color_chaqueta
  6. FROM ropa R
  7.    INNER JOIN color C1 ON R.colorpantalon = C1.idcolor
  8.    INNER JOIN color C2 ON  ON R.colorcamisa = C2.idcolor
  9.    INNER JOIN color C3 ON R.colorchaqueta = C3.idcolor;
Esto se hace así porque simplemente no hay un registro único de color que te pueda dar la combinación completa, por lo que un sólo INNER JOIN no funciona, entonces se usa la misma tabla tres veces con un alias diferente para cada una.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 29/06/2010, 08:27
 
Fecha de Ingreso: febrero-2010
Mensajes: 2
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Consulta SQL: Campo de tabla A está relacionado con 3 campos de la tabla B

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Debes hacer una invocación triple a la tabla de colores:
Código SQL:
Ver original
  1. SELECT
  2.    Idropa,
  3.    C1.nombrecolor color_pantalon,
  4.    C2.nombrecolor color_camisa,
  5.    C3.nombrecolor color_chaqueta
  6. FROM ropa R
  7.    INNER JOIN color C1 ON R.colorpantalon = C1.idcolor
  8.    INNER JOIN color C2 ON  ON R.colorcamisa = C2.idcolor
  9.    INNER JOIN color C3 ON R.colorchaqueta = C3.idcolor;
Esto se hace así porque simplemente no hay un registro único de color que te pueda dar la combinación completa, por lo que un sólo INNER JOIN no funciona, entonces se usa la misma tabla tres veces con un alias diferente para cada una.
Mil gracias amigo gnzsoloyo por tu gran ayuda y por tu clara explicación, he adaptado la consulta SQL para Access y quedó de la siguiente forma:

Código SQL:
Ver original
  1. SELECT Idropa,
  2. C1.nombrecolor AS color_pantalon,
  3. C2.nombrecolor AS color_camisa,
  4. C3.nombrecolor AS color_chaqueta
  5. FROM ((ropa INNER JOIN color AS C1 ON ropa.colorpantalon = C1.idcolor)
  6. INNER JOIN color AS C2 ON ropa.colorcamisa = C2.idcolor)
  7. INNER JOIN color AS C3 ON ropa.colorchaqueta = C3.idcolor;

Gracias.

Etiquetas: sql
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 02:43.