entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

No me funciona Consulta SQL que antes si lo hacía

Buenos Días, tengo un gran problema con una consulta que antes me funcionaba perfectamente pero ahora no da error pero no muestra los datos:
mi consulta problemática me retorna las noticias más visitadas de entre varias tablas, de los últimos 7 días y uniendola con unión, antes me funcionaba al 100% pero ahora no hace nada y no he cambiado nada, incluso la estoy corriendo en el cliente de mysql y no da nada:
Consulta SQL:

SELECT titulo,visitas,fecha From news11 WHERE DATEDIFF(CURDATE(), STR_TO_DATE(Fecha, '%Y/%m/%d')) <= 6 AND tipo = 'noticia' 
UNION SELECT titulo,visitas,fecha From news12 WHERE DATEDIFF(CURDATE(), STR_TO_DATE(Fecha, '%Y/%m/%d')) <= 6 AND tipo = 'noticia' 
UNION SELECT titulo,visitas,fecha From news13 WHERE DATEDIFF(CURDATE(), STR_TO_DATE(Fecha, '%Y/%m/%d')) <= 6 AND tipo = 'noticia' 
ORDER BY visitas DESC LIMIT 7

Saludos Dairon

0voto

carlossevi comentado

Si estás seguro de que las tablas tienen datos prueba a ejecutar la consulta sin filtrar y muestra los valores CURDATE() y STR_TO_DATE(Fecha, '%Y/%m/%d') por separado y el correspondiente DATEDIFF() para ver si detectas algún problema con la configuración de fecha del servidor de MySQL o el origen del problema.

0voto

dairon comentado

man yo inserté ahora unas noticias y si me aparecieron en las mas visitadas, es que se me había olvidado el curdate(), esto busca noticias a partir del día de hoy hasta seis dias antes sin contar este y mis datos de prueba eran viejos, existe alguna forma que me busque noticias de los ultimos 7 dias sin tener en cuenta cual es el día de hoy. ??

1 Respuesta

3votos

carlossevi Puntos63580

Si no quieres seleccionar las noticias de "hoy" puedes cambiar el DATEDIFF(...) <= 6 por DATEDIFF(...) BETWEEN 1 AND 6 y así desestimas las difencias de cero días (las del día de hoy).

0voto

dairon comentado

me estoy machucando, realmente lo voy a dejar con el current_date si de todas formas el sitio se actualiza diario, gracias mano, luego implementaré de esta manera ya que me gusta más, es general

0voto

carlossevi comentado

Yo para el futuro estudiaría la forma de evitar el uso de tantas tablas para guardar datos del mismo tipo porque solo da dolores de cabeza. Si todo son noticias ¿por qué no utilizar una única tabla "news"? La categoría podría ser una columna indizada.

Solo me plantearía duplicar tablas en el caso de que se acumulen muchos registros con el paso del tiempo y esto deteriore el rendimiento, pero serían tablas de archivo o históricos que ya no se consulten en la aplicación, por ejemplo news_archive o incluso news_archive_2013 si el volumen fuera bestial.

0voto

dairon comentado

mano así era la base de datos vieja que mantengo en el sitio pero ya tenía más de 60K de noticias

0voto

carlossevi comentado

¿Se demoran mucho las consultas con 60K registros sobre la tabla de noticias? En la aplicación que mantengo día a día hay tablas de >20 millones de registros, aunque claro, no es un CMS =)

La clave en el caso de la tabla de noticias es identificar el momento en el que deja de ser relevante tenerla en la tabla principal (es decir, que ya no tengan visibilidad, muy poco tráfico, relevancia...) y archivarlas para la consulta de hemeroteca donde es menos crítico el rendimiento.

0voto

dairon comentado

mano ya terminé mi sitio y lo publiqué esta es la url esta en face de pruebas http://www.radiosantacruz.icrt.cu/es

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta