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

contabilizar lecturas de un registro con penalización...

Estas en el tema de contabilizar lecturas de un registro con penalización... en el foro de Mysql en Foros del Web. Holas, en mi galería, realizo unas estadísticas mensuales donde el ganador del mes aparecerá en el calendario del año siguiente... el ganador se saca del ...
  #1 (permalink)  
Antiguo 03/12/2008, 04:43
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
contabilizar lecturas de un registro con penalización...

Holas, en mi galería, realizo unas estadísticas mensuales donde el ganador del mes aparecerá en el calendario del año siguiente... el ganador se saca del más visto, más comentado, más impreso y más enviado a sus amigos... recibiendo 5, 4, 3 y 2 punto por cada sección y posición en el ranking de cada categoría... pero quiero penalizar las lecturas por cada comentario que no tenga nada que ver con el dibujo.

Aquí está el control de las estadísticas mensuales: http://www.fanart.nippon-tour.com/in...?seccion=lomas

actualmente, las lecturas las calculo así, sólo puntuan los 4 primeros:

Código PHP:
SELECT `id_item`,`lecturas`
            
FROM `stats_items`
            
WHERE `fecha_mes`='2008-12-00'
            
ORDER BY `lecturasDESC            
            LIMIT 4 
Tengo una tabla, donde contabilizo las lecturas que tienen los items de cada mes en mi galería ... y también otra donde almaceno los comentarios que se realizan de dichos items... estos comentarios pueden tener valor 1 o 0, dependiendo si el tema del comentario es referente al item o se lo han tomado como un chatBox... y lo que quiero es que si el comentario tiene valor 0, reste 3 lecturas al item...

Código PHP:
CREATE TABLE IF NOT EXISTS `stats_items` (
  `
fecha_mesdate NOT NULL default '0000-00-00',
  `
id_itemmediumint(9NOT NULL default '0',
  `
lecturasmediumint(9NOT NULL default '0',
  `
impresionesmediumint(9NOT NULL default '0',
  `
enviossmallint(6NOT NULL default '0'
ENGINE=MyISAM DEFAULT CHARSET=latin1

Código PHP:
CREATE TABLE IF NOT EXISTS `comentarios` (
  `
idsmallint(6NOT NULL auto_increment,
  `
fecha_horadatetime NOT NULL default '0000-00-00 00:00:00',
  `
id_itemmediumint(9NOT NULL default '0',
  `
contenidolongtext NOT NULL,
  `
validotinyint(1NOT NULL default '1',
  `
autorvarchar(255NOT NULL default '',
  `
emailvarchar(255NOT NULL default '',
  `
avisarint(1NOT NULL default '0',
  `
hostnamevarchar(255NOT NULL default '',
  `
hostvarchar(255NOT NULL default '',
  
PRIMARY KEY  (`id`)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3228 
He llegado a este SELECT para averiguar el resultado de: lecturas-(comentarios*3 si `valido`='0') pero de un item en concreto indicado en WHERE `id_item`='991'

Código PHP:
SELECT (SELECT `lecturasFROM `stats_itemsWHERE `id_item`='991' AND `fecha_mes`='2008-12-00')-(SELECT (SELECT count(*) FROM `comentariosWHERE `id_item`='991' AND `fecha_hora`>='2008-12-01' AND `valido`='0'))*
Pero no sabría hacer un SELECT para que me recoja los más leídos con esa penalización... no se si me he explicado...

Plis ayudadme!!!
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
  #2 (permalink)  
Antiguo 22/12/2008, 02:50
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
Respuesta: contabilizar lecturas de un registro con penalización...

nadie me puede/sabe ayuda?? snif, snif
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
  #3 (permalink)  
Antiguo 22/12/2008, 03:57
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: contabilizar lecturas de un registro con penalización...

X3mdesign,

a ver esto.
Si he entendido bien, tú tienes en una tabla el número de lecturas y quieres restarle 3 lecturas por cada comentario sobre ella que no tenga que ver con imagen.
Prueba esto a ver si te soluciona en parte el problema, aunque creo que hay otros problemas:

Código sql:
Ver original
  1. SELECT st.id_item, st.lecturas - IFNULL(t1.resto, 0) TOTLECTURAS FROM `stats_items` st
  2.  LEFT JOIN (SELECT id_item ID, (COUNT(*)*3) resto, YEAR(fecha_hora) ano, MONTH(fecha_hora) mes
  3.  FROM comentarios WHERE YEAR(fecha_hora) = '2008' AND MONTH(fecha_hora) = '12' GROUP BY id_item)t1
  4.  ON st.id_item = t1.ID AND t1.ano = YEAR(fecha_mes) AND t1.mes=MONTH(fecha_mes)
  5.  ORDER BY TOTLECTURAS DESC LIMIT 4

Pero si asignas así los puntos, puede ocurrir que el quinto, sexto, séptimo, etc. también tengan los mismos puntos que el cuarto y hayan quedado injustamente fuera. Ese problemilla, yo lo resolvería con programación, aunque también creo que se puede con la base de datos, pero resulta algo más complejo.

Dinos si vamos encaminados.

Última edición por jurena; 22/12/2008 a las 05:25
  #4 (permalink)  
Antiguo 23/12/2008, 10:03
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
Respuesta: contabilizar lecturas de un registro con penalización...

mmm teóricamente eso es lo que quiero... cuando pruebe el código te cuento, ahora mismo no puedo...

hasta ahora lo había resulto cogiendo los 16 primeros registros con más lecturas... y luego aplicando a cada uno la penalización y metiendo en un array[id_item]=lecturas-(3*penalizaciones) y ordenándolo de con asort.... porteriormente cojo los 4 primeros... y los premio con 5, 4, 3 y 2 puntos...

lamentablemente no había contado con el supuesto que comentas de que varios items tuvieran la misma puntuación... y entiendo que tal vez el registro #17 tal vez tenga menos penalizaciones que ninguno y se quede sin puntuar... tengo que solucionarlo...

gracias!!! ya te cuento...
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
  #5 (permalink)  
Antiguo 23/12/2008, 11:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: contabilizar lecturas de un registro con penalización...

Ahora las penalizaciones ya van incluidas, con lo que evitas esa parte del array y todo lo demás, pero deberás traerte algo más de 4. Incluso podrías, por ej., traerte 50 (no creo que haya 46 con la misma puntuación) y al cargar los datos en el array produces el corte en el último tras el cuarto que tenga la puntuación inferior a la del cuarto.

Se me ocurre. Pero ya nos contarás.
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 21:47.