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

Multiples querys - ¿Sobrecarga? ¿cómo hacerlo?

Estas en el tema de Multiples querys - ¿Sobrecarga? ¿cómo hacerlo? en el foro de Mysql en Foros del Web. Buenos días a todos. Escribo con dudas sobre cómo plantear un tema sobre consultas. El planteamiento es: - Tengo productos y cada producto tiene tallas, ...
  #1 (permalink)  
Antiguo 26/08/2012, 04:43
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 843
Antigüedad: 13 años, 8 meses
Puntos: 9
Multiples querys - ¿Sobrecarga? ¿cómo hacerlo?

Buenos días a todos.

Escribo con dudas sobre cómo plantear un tema sobre consultas.

El planteamiento es:

- Tengo productos y cada producto tiene tallas, marcas, etc (propiedades)

Tengo que mostrar a la izquierda las propiedades y entre paréntesis, cuantos productos hay con esa propiedad.

Entonces ¿Cómo plantearlo?
A mi solo se me ocurre:
- Obtener la propiedades
- Hacer POR CADA PROPIEDAD una query para saber cuantos productos tienen esa propiedad
---- Hablamos de .... 9 marcas, 18 tallas... más de 20 y 25 querys para las propiedades (más luego la query de muestra de productos general a la derecha)


¿Hay alguna otra mejor manera de hacerlo? ¿algún otro planteamiento?

Gracias a todos y espero vuestra respuesta

Un saludo.

Javier
  #2 (permalink)  
Antiguo 26/08/2012, 09:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.309
Antigüedad: 11 años
Puntos: 2646
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)
  #3 (permalink)  
Antiguo 26/08/2012, 09:30
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 843
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Multiples querys - ¿Sobrecarga? ¿cómo hacerlo?

Hola gnzsoloyo

Gracias por responder.

Si que es cierto que pasé por alto el poneros la estructura de tablas.

Os doy detalles:

- Productos:
---- PRODUCT_ID
---- PRODUCT_name
---- PRODUCT_descritpion
---- ...


- Filtros:
---- FILTER_ID
---- FILTER_name
---- FILTER_options
---- PRODUCT_ID (es la relación entre el filtro y el producto, dado que cada producto tiene filtros TOTALMENTE diferentes. Habrá algún caso que la talla se repita COMO FILTRO (pero es diferente para calzado que para camisetas, que para camisetas de niño o de mujer,... talas diferentes por completo)

Por ello, la consulta que me has puesto.. pones los filtros A MANO, pero en mi caso, son filtros obtenidos por base de datos de ESE producto concreto...

No me llego del todo a aclarar de cómo conseguirlo.. espero tu/vuestra ayuda :)

Saludos.

Javier
  #4 (permalink)  
Antiguo 27/08/2012, 06:05
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 843
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Multiples querys - ¿Sobrecarga? ¿cómo hacerlo?

¿Alguna otra idea? ¿alguien me echa una mano para poder sacar mejor la idea?

Gracias!!

Javier

Etiquetas: multiples, querys, sobrecarga
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 18:32.