30/10/2009, 01:53
|
Colaborador | | Fecha de Ingreso: marzo-2008 Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses Puntos: 300 | |
Respuesta: Consulta Yo creo que la estructura que tienes no es la adecuada. Se puede hacer, claro, pero es mejor usar tres tablas y no dos. Me explico:
tabla productos
producto_id
producto_des
tabla embalajes
embalaje_id
embalaje_des
tabla embalajesproductos
embprod_id
refidprod
refidemb
la tabla embalajes tendría, así, los siguientes valores
embalaje_id, embalaje_des
1, embalaje
2, embalaje_2
3, embalaje, 3
Un eje. de aplicación:
el producto cuyo producto_id es 4 aparece en tres tipos de embalajes, el embalaje, embalaje_2 y embalaje_3, cuyos embalaje_id son 1, 2, 3, respectivamente; y el producto 2 sólo tiene el embalaje 2. Pues bien, en la tercera tabla tendrías;
embprod_id, refidprod, refidemb
1, 4, 1
2, 4, 2
3, 4, 3
4, 2, 2
Eso te permitiría trabajar mucho mejor. Con lo que tienes puede hacerse, pero te verás obligado a ir tres veces a la tabla productos para mediante un cruce con embalajes poder mostrar la descripción de los tres, cuando los haya. No será eficiente y dificultará muchas consultas. Si puedes cambiar la tabla, yo te recomendaría esto, pues con un recorrido y dos cruces (INNER JOIN) de tabla te bastaría para tener todo. Piénsatelo. Si no te es imposible modificar la tabla, te haremos una propuesta con lo que tienes.
Respecto al error, es lógico, pues estás intentando unir con la misma tabla 3 veces y eso no puede hacerse sin utilizar 2 alias para esa tabla en las otras dos ocasiones en que vas a ella. De todos modos tampoco te valdría la consulta sólo cambiando añadiendo alias.
Última edición por jurena; 30/10/2009 a las 01:59 |