Ver Mensaje Individual
  #7 (permalink)  
Antiguo 07/02/2012, 13:30
Avatar de catpaw
catpaw
 
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 7 meses
Puntos: 23
Respuesta: armar consulta para mostrar las opiniones mas...

que tal quimfv, gracias por tu explicacion, ya me quedo mucho mas claro el asunto

Cita:
No se como consigues ese num_visto
mira normalmente ya conozco el id de cada opinión que muestro de acuerdo a la consulta simple

SELECT * FROM opiniones LIMIT 0,4 donde mediante un:

while($row_pop=mysql_fetch_array($res_pop, MYSQL_ASSOC)){

voy recogiendo los valores de cada opinion,

$id_opinion_pop=$row_pop['id_opinion'];

para cada opinion muestro cuantas visitas tiene, con la siguiente consulta:

SELECT SUM(num_visto) FROM contador WHERE id_opinion='$id_opinion_pop'

las tablas que interaccionan aqui son:

opiniones
----------------
id_opinion
autor_op
fecha_op
hora_op
email_op
id_categoria_op
titulo_op
descripcion_op


contador
-----------------
id_visto
ip_visto
num_visto
fecha_visto
id_opinion

Cita:
No seria mas logico guardar un registro por visita?...
según yo así lo hago, mira acá en la tabla contador se guarda la id de la opinion visitada y los datos de la visita que son un id, la ip, el numero de visitas y la fecha/hora (si coincide la ip y han pasado mas de 5 horas, le suma uno al valor que tenga el campo num_visto y actualiza la fecha y hora, de lo contrario no cuenta la visita)

por ejemplo te ponia los valores que tengo de prueba en la tabla contador:

id_visto__ ip_visto__ num_visto____ fecha_visto__________ id_opinion
1_______ 127.0.0.1_______ 2_______ 2012-02-03 13:30:23_______ 2
2_______ 127.0.0.2_______ 1_______ 2012-02-02 18:29:57_______ 1
3_______ 127.0.0.1_______ 2_______ 2012-02-03 13:26:11_______ 1
4_______ 127.0.0.1_______ 1_______ 2012-02-03 13:17:35_______ 6
5_______ 127.0.0.1_______ 1_______ 2012-02-03 13:30:45_______ 4

como podras darte cuenta la id de la opinion 1 se repite, lo que significaria que se vio 1 una vez por la ip 127.0.0.2 y dos veces por la ip 127.0.0.1, entonces para obtener el numero de visitas de la opinion 1 se deben sumar el 1 y el 2 del campo num_visto donde las ip sean iguales, en este caso a 1.



entonces lo que necesito es en una sola consulta tener los resultados de:

-> SELECT * FROM opiniones
-> SELECT SUM(num_visto) FROM contador WHERE id_opinion='$id_opinion_pop'

***mostrados de acuerdo al numero de visitas DESC***
perooooo teniendo en cuenta que ya no sabre de antemano la $id_opinion_pop



de verdad muchas gracias por la ayuda

Última edición por catpaw; 07/02/2012 a las 13:40