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

¿2 joins a la misma tabla o 2 tablas distintas?

Estas en el tema de ¿2 joins a la misma tabla o 2 tablas distintas? en el foro de Bases de Datos General en Foros del Web. Hola tengo la siguiente duda: Tengo una tabla de colores y otra tabla productos. Los productos pueden tienen 2 colores, asi que mi pregunta es: ...
  #1 (permalink)  
Antiguo 17/02/2012, 15:32
Avatar de mdromed  
Fecha de Ingreso: septiembre-2009
Mensajes: 389
Antigüedad: 14 años, 7 meses
Puntos: 8
Pregunta ¿2 joins a la misma tabla o 2 tablas distintas?

Hola tengo la siguiente duda:

Tengo una tabla de colores y otra tabla productos.
Los productos pueden tienen 2 colores, asi que mi pregunta es:

¿Tengo que hacer 2 joins en la misma consulta con distintos alias para sacar ambos colores de la misma tabla "colores"? ¿o tengo que crear una tabla de "colores1" y otra de "colores2" y hacer un join a cada una de ellas para sacar ambos colores?

Supongo que se puede hacer de las 2 maneras pero quisiera saber cual es la correcta y la que mejor rendimiento(=velocidad) daría en una consulta sql.

Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 17/02/2012, 15:41
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: ¿2 joins a la misma tabla o 2 tablas distintas?

creo que lo mas conveniente seria 2 joins a la misma tabla

Código SQL:
Ver original
  1. SELECT * FROM productos AS p
  2. JOIN colores AS c1 ON (p.idcolor1=c.idcolor)
  3. JOIN colores AS c2 ON (p.idcolor2=c.idcolor)

Saludos!!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 17/02/2012, 22:36
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: ¿2 joins a la misma tabla o 2 tablas distintas?

Una opción es, como bien plantea Libras, la tabla Colores y la tabla Productos con los campos idcolor1 y idcolor2, esta solución es viable cuando la cantidad de colores por producto no varía y la información de los colores solo la quieres visualizar en columnas.

La otra opción es la tabla Colores, la tabla Productos y la tabla ColoresProducto con los campos idproducto y idcolor, esto es útil cuando la cantidad de colores por producto es variable y/o quieres visualizar la información de los colores en columnas o en registros, por ejemplo:

Prod1 | Rojo | Verde

o bien

Prod1 | Rojo
Prod1 | Verde

La opción de la tabla Colores1 y la tabla Colores2, aunque funcione, no la deberías considerar porque es un error de diseño. Respecto al rendimiento, no habrá diferencia, en los dos casos las consultas son simples, además una tabla que almacene productos o colores no será de gran tamaño.

Saludos
  #4 (permalink)  
Antiguo 18/02/2012, 13:14
Avatar de mdromed  
Fecha de Ingreso: septiembre-2009
Mensajes: 389
Antigüedad: 14 años, 7 meses
Puntos: 8
Respuesta: ¿2 joins a la misma tabla o 2 tablas distintas?

Ok gracias por las sugerencias a ambos!

Etiquetas: join, sql, 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 12:27.