Bueno así parece entonces que
jurena es más rápido pero
quimfv más efectivo.
Es que probé con ambas consulta luego de hojearlas y la de quimfv en su aparente complejidad funcionó muy bien mientras la de jurena hace lo mismo que la mía. Que por cierto, no devuelve como yo dije al principio la cantidad de registros de imagen de cada idArticulo en la DB sino que devuelve la cantidad de imágenes multiplicada por la cantidad de visitas, así un artículo con 6 imágenes y 335 visitas da 2010 "visitas".
Me acabo de desayunar el tema de las subconsultas en el Manual de MySQL para entender la consulta de
quimfv, que si anda con ganas y tiempo le agradecería me explicara al menos a grandes rasgos, como fue razonando él para llegar a la consulta que llegó. Por mi parte entiendo esto:
Código SQL:
Ver original/*Las columnas que quiero*/
SELECT articulos.idarticulo,
articulos.titulo,
sbcimagenes.src AS img,
SbCVisitas.SuVisitas AS Visitas
FROM (articulos
LEFT JOIN
/*Consigo todos los articulos y src de la imagen*/
(SELECT img1.idArticulo,img1.src FROM imagenes AS img1
INNER JOIN
/*El menor idimg por cada articulo*/
(SELECT idarticulo,MIN(idimg) AS MidImagen FROM imagenes GROUP BY idarticulo) AS img2
/*Las uno por idimg y consigo todos los articulos con sus imagenes*/
ON img1.idimg = img2.MidImagen) AS sbcimagenes
/*Uno por idarticulo con articulos*/
ON articulos.idarticulo = sbcimagenes.idarticulo)
/*Combino las imagenes y los idarticulos con las estadisticas */
LEFT JOIN (SELECT estadisticas.idarticulo,SUM(estadisticas.visitas) AS SuVisitas
FROM estadisticas
GROUP BY estadisticas.idarticulo) AS SbCVisitas
/*A través de idarticulo*/
ON articulos.idarticulo = SbCVisitas.idarticulo;
Lo que también me gustaría entender es por qué falla la consulta mía o la de
jurena, ¿por qué cuando le digo que SUM(estadisticas.visitas) multiplica la cantidad de registros de imagen por la cantidad de visitas?.
Bueno ando preguntón y disculpas si molesta, por mi parte las enormes gracias a
quimfv porque creo que jamás hubiera llegado a tal consulta.