Saludos cordiales,
Tengo 4 tablas: (pongo los campos relevantes)
Productos
producto_id,descripcion,activo
Productos_a_subcategias
id,producto_id,subcategoria_id
comentarios
id,producto_id
votos
id,producto_id
Lo que hago ahora:
Selecciono todos los productos de la tabla productos que esten condicionados con la subcategoria a la que pertenece
Despues, pues en programacion, recorro el recordset y para cada uno de los productos, hago la media de los votos:
Y tambien cuento la cantidad de comentarios que tiene cada uno:
Esto creo que es malgastar recursos del servidor, ademas de que asi, no puedo ordenar los resultados, por ejemplo, por producto mas comentado o mas valorado.
Y he probado haciendo algunas pruebas con INNER JOIN, LEFT JOIN, pero mis conocimientos son basicos y no me aclaro.
Esto es lo que llevo ahora, pero no funciona bien :(
Código MySQL:
Ver originalINNER JOIN productos_a_subcategorias pas
ON p.producto_id
= pas.producto_id
AND pas.subcategoria_id
= 27 AND p.activo
= TRUE LEFT JOIN (SELECT id_producto opi_id_producto
,activo opi_act
,COUNT(*) total_opiniones
FROM opiniones
) opi
ON p.producto_id
= opi.opi_id_producto
AND opi.opi_act
= TRUE LEFT JOIN (SELECT producto_id voto_producto_id
,AVG(voto
) as voto_media_votos
FROM valoracion_producto
) voto
ON p.producto_id
= voto.voto_producto_id
Alguna ayuda me vendrá genial, llevo dos dias haciendo pruebas, pero no doy con la tecla.