Respuesta: armar consulta para mostrar las opiniones mas... SELECT op.id_opinion,
op.autor_op,
op.fecha_op,
op.hora_op,
op.email_op,
op.id_categoria_op,
op.titulo_op,
op.descripcion_op,
/// Efectivamente es la lista de campos
ifnull(numRep.numComentarios,0) comentarios
/// Numero de replicas (si, numRep.numComentarios es un alias)
/// La funcion Ifnull pasa los nulos a cero
/// al resultado se le da el alias "comentarios"
FROM
opiniones op LEFT JOIN
/// Por el left join consigo que me muestre todas las opiniones tengan o no replicas
(SELECT id_opinion,
count(*) numComentarios
FROM replicas
GROUP BY id_opinion) numRep
///Subconsulta, con alias numRep, que me da el numero de replicas por cada opinion, fijate que retorna dos campos el id_opinion para poder relacionar con la otra tabla y el count(*) con alias numComentarios
ON op.id_opinion=numRep.id_opinion
//Clausula ON que relaciona la tabla opiniones (alias op) con la subconsulta con alias numRep por el campo id_opinion
ORDER BY ifnull(numRep.numComentarios,0) DESC;
//// Ordeno en orden inverso (DESC, mayor a menor) por el numero de replicas.
Otras dudas...
No se como consigues ese num_visto
1_______ 127.0.0.1_______ 2_______ 2012-02-03 13:30:23_______ 2
esto significa que la opinion 2 se ha visitado 2 veces en el segundo 23 del minuto 30.... muy fino el contador...
No seria mas logico guardar un registro por visita?...
Tu adaptación de la consulta
SELECT
op.id_opinion,
op.autor_op,
op.lugar_op,
op.fecha_op,
op.hora_op,
op.email_op,
op.id_categoria_op,
op.titulo_op,
op.descripcion_op,
Te falta el numero de visitas... no? sbcVisitas.visitas
FROM opiniones op LEFT JOIN
(SELECT SUM(ct.num_visto)
FROM contador ct)
Esta subconsulta retorna la suma de todos los vum_visto, y ademas no esta el campo id_opinion por lo que no se puede relacionar con la tabla opiniones
Toda subconsulta debe tener su alias
sunbstituyela por
(SELECT ct.id_opinion,SUM(ct.num_visto) visitas
FROM contador ct
GROUP BY ct.id_opinion) sbcVisitas
ON op.id_opinion=ct.id_opinion
La relacion es entre la tabla y la subconsulta luego debes cambiar los alias
ON op.id_opinion=sbcVisitas.id_opinion
ORDER BY ct.num_visto DESC LIMIT 0,4";
idem
ORDER BY sbcVisitas.visitas DESC LIMIT 0,4;
__________________ Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
Última edición por quimfv; 06/02/2012 a las 02:46 |