Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/08/2012, 08:09
Avatar de gnzsoloyo
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: Multiples querys - ¿Sobrecarga? ¿cómo hacerlo?

Sin ver la tabla de propiedades, es algo complicado responderte, porque depende de cómo estén estructuradas esas "propiedades", y cómo se las identifica a cada una de ellas, la cosa puede cambiar.
En general, necesitas una consulta con LEFT JOIN, y por cada columna de la tabla resultado se requiere usar un IF() en el SELECT (con su correspondiente alias).
El problema aparece si las "propiedades" se ingresan a la tabla de forma manual, y se den casos como que una propiedad es "Talle" y en otro registro aparezca como "Tall.". Entonces todo falla.
Además, si cada producto puede tener diferentes cantidades de propiedades, entonces se requieren tres tablas, porque eso es una relación N:N y por definición eso crea una tabla relacional.

En principio, la consulta es algo así:

Código MySQL:
Ver original
  1.     P.Producto,
  2.     SUM(IF(PR.descripcion = 'talle', 1, 0)) Talle,
  3.     SUM(IF(PR.descripcion = 'marca', 1, 0)) Marcas,
  4.     ... (el resto de los subconjuntos)
  5.     producto P
  6.     INNER JOIN propiedad_producto PR ON P.idproducto = PR.idproducto
  7.     LEFT JOIN propiedad PO ON PR.idpropiedad = PO.idpropiedad
  8. GROUP BY P.id_producto

Nota bene: Siempre es necesario que aportes la estructura de las tablas para poder responderte, de lo contrario, como ahora, estamos adivinando lo que tienes y lo que se puede hacer.
No lo olvides para la próxima.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)