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

Mostrar temas más populares en los últimos 100 comentarios

Estas en el tema de Mostrar temas más populares en los últimos 100 comentarios en el foro de Mysql en Foros del Web. Buenas, Tengo una consulta gracias a la cual puedo obtener los temas más comentados sobre un artículo: Código PHP: <?       $_MAS_POST  =  "" ; CONSULTA A LA BASE DE DATOS ...
  #1 (permalink)  
Antiguo 13/09/2011, 01:16
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Mostrar temas más populares en los últimos 100 comentarios

Buenas,

Tengo una consulta gracias a la cual puedo obtener los temas más comentados sobre un artículo:

Código PHP:
<?      
$_MAS_POST 
"";
CONSULTA A LA BASE DE DATOS
$sql 
mysql_query("select id, count(id) total from comentarios group by id order by total desc limit 5");
while(
$row=mysql_fetch_array($sql,MYSQL_ASSOC)){
$_MAS_POST .= '<b>'.$row["id"].'</b>'$rs["total"].'<br>';
}
echo 
$_MAS_POST;

?>
Con esta consulta me gustaría saber cómo puedo lograr que muestre los temas más comentados dentro de los últimos 100 comentarios enviados por los usuarios (actualmente me muestr los más populares de todos los comentarios)

Muchas Gracias! :)
  #2 (permalink)  
Antiguo 13/09/2011, 02:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Código MySQL:
Ver original
  1. select sbc.id,
  2. count(sbc.id) total
  3. from (SELECT * FROM comentarios order by fecha DESC limit 100) as sbc

No?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 13/09/2011 a las 02:29
  #3 (permalink)  
Antiguo 13/09/2011, 03:02
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Muchas gracias!! Funcionó perfectamente.

No conocía "sbc" :)

Un saludo.
  #4 (permalink)  
Antiguo 13/09/2011, 03:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar temas más populares en los últimos 100 comentarios



"SBC" es sólo un alias, no una función o una cláusula. Bien le podrias haber puesto "A" o "basura" y hubiese dado el mismo resultado.

La solución con una subconsulta que te propone Quimfv necesita ese alias porque toda tabla derivada (proveniente de un SELECT en el FROM), debe tener un alias asignado., pero lo importante en la solución es la lógica usada para hacerlo usando esa subconsulta.
Eso es lo que debes tener en cuenta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 13/09/2011 a las 18:20
  #5 (permalink)  
Antiguo 13/09/2011, 04:51
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Un inciso

con este código:

Código PHP:
SELECT sbc.id
count(sbc.idtotal 
FROM 
(SELECT FROM comentarios ORDER BY fecha DESC LIMIT 100) as sbc
GROUP BY id 
ORDER BY total desc LIMIT 5 

me gustaría que junto al número de comenarios aparecieran otros datos contenidos en la tabla "usuarios". es decir para poder "sazonar" los temas con el avatar del usuario. Básicamente poder llamr a otra tabla para que muestre todos los campos de la tabla "usuarios" y poder manejarlos en los resultados de la consulta

Código PHP:
<?      
$_MAS_POST 
"";
CONSULTA A LA BASE DE DATOS
$sql 
mysql_query("SELECT sbc.id, 
count(sbc.id) total 
FROM (SELECT * FROM comentarios ORDER BY fecha DESC LIMIT 100) as sbc
GROUP BY id 
ORDER BY total desc LIMIT 5
"
);
while(
$row=mysql_fetch_array($sql,MYSQL_ASSOC)){
$_MAS_POST .= '<b>'.$row["id"].'</b>'$rs["total"].'<br>';
}
echo 
$_MAS_POST;

?>
¿sería algo así?

Código PHP:
<?      
$_MAS_POST 
"";
CONSULTA A LA BASE DE DATOS
$sql 
mysql_query("SELECT sbc.id, 
count(sbc.id) total 
FROM (SELECT * FROM usuarios AND comentarios ORDER BY comentarios.fecha DESC LIMIT 100) as sbc
GROUP BY comentarios.id 
ORDER BY total desc LIMIT 5
"
);
while(
$row=mysql_fetch_array($sql,MYSQL_ASSOC)){
$_MAS_POST .= '<b>'.$row["id"].'</b>'$rs["total"].'<br>';
}
echo 
$_MAS_POST;

?>
  #6 (permalink)  
Antiguo 13/09/2011, 06:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Si buscas mostrar los datos del usuario autor del articulo sobre el que se hacen comentarios es muy simple puesto que la relación será 1 a 1 .... si tienes el id del usuario en comentarios pero seguramente no lo tendrás...

Vamos a suponer

Articulos
id
articulo
idUsuario <---- Este se refiere al autor del articulo
fecha <----- del articulo

Usuarios
id
Nombre
...

Comentarios
idComentario
comentario
idArticulo
idUsuario <--- este se refiere al autor del comentario
fecha <---- del comentario

Via idArticulo relacionamos comentarios con articulos y via idUsuario relacionamos articulos con usuarios (autores de articulo)

n comentarios a 1 articulo y 1 articulo a 1 usuario.


Código MySQL:
Ver original
  1. SELECT sbc.idarticulo,
  2. ....campos del susario autor del articulo ...,
  3. ....campos del articulo....,
  4. count(*) total
  5.            .... campos que vas a usar....
  6.            FROM comentarios
  7.              INNER JOIN (articulos
  8.                INNER JOIN usuarios
  9.                 ON articulos.idusuario=usuarios.idusuario)
  10.               ON comentarios.idarticulo=articulos.idarticulo
  11.           ORDER BY comentarios.fecha DESC LIMIT 100) as sbc
  12. GROUP BY sbc.idarticulo




Mostrar datos del los autores de los comentarios no tiene mucho sentido junto con el count()

Si en otra consulta, al lado del comentario, no del count, quieres mostrar datos del autor del comentario tendràs que relacionar comentarios directamente con usuarios ....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 13/09/2011 a las 06:39
  #7 (permalink)  
Antiguo 13/09/2011, 09:13
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

No me expresé bien, pero es más atractio lo que planteas.

Es decir, ¿si eliminamos la tabla usuarios y nos quedamos con artículos y comentarios, cómo podría "pintar" no sólo la id del artículo más cometnado (presente en la tabla de comentarios) sino además varios campos de dicho artículo (como título, foto y demás)?


Es decir, como bien dices, no tiene mucho sentido el poner los datos de los usuarios que comentan, sino más bien el artículo más comentado.
  #8 (permalink)  
Antiguo 13/09/2011, 09:14
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Cita:
Iniciado por gnzsoloyo Ver Mensaje


"SBC" es sólo un alias, no una función o una cláusula. Bien le podrias haber puesto "A" o "basura" y hubiese dado el mismo resultado.

La solución con una subconsulta que te propone Quimfv necesita ese alias porque [B] toda tabla derivada (proveniente de un SELECT en el FROM), debe tener un alias asignado.[/B, pero lo importante en la solución es la lógica usada para hacerlo usando esa subconsulta.
Eso es lo que debes tener en cuenta.
Ajá. Muchas gracias. Ahora lo entiendo del todo
  #9 (permalink)  
Antiguo 13/09/2011, 09:25
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Con este select:


Código MySQL:
Ver original
  1. SELECT sbc.idarticulo,
  2. ....campos del susario autor del articulo ...,
  3. ....campos del articulo....,
  4. count(*) total
  5.            .... campos que vas a usar....
  6.            FROM comentarios
  7.              INNER JOIN (articulos
  8.                INNER JOIN usuarios
  9.                 ON articulos.idusuario=usuarios.idusuario)
  10.               ON comentarios.idarticulo=articulos.idarticulo
  11.           ORDER BY comentarios.fecha DESC LIMIT 100) as sbc
  12. GROUP BY sbc.idarticulo

¿cómo habría que poner correctamente el contenido de las líneas 2, 3 y 6?
....campos del susario autor del articulo ...,
....campos del articulo....,

¿empezando con la tabla y tras el punto el campo en cuestión? ¿se podría poner también un "*" o hay que denorminarlos sí o sí?

¿qué suceería en el caso de que campo "idarticulo" se denomine "id" tanto en la tabla artículo como en la tabla comentarios?

Mil gracias por tu ayuda

Última edición por David224; 13/09/2011 a las 10:20
  #10 (permalink)  
Antiguo 14/09/2011, 01:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Puedes poner * en la linea 1 despues del select y eliminars las lineas 2 y 3, el 6 tambien pudes poner el *, creo, no se que pasa con los campos de distintas tablas que tengan el mismo nombre, yo prefiero hacer una query que solo responda con los campos que necesito con lo que hay que listar los nombres de los campos.

En las lineas 2 y 3 com sbc.nombrecampo y en la 6 como nombretabla.nombrecampo obviamente separados por comas....

Si idArticulo se llama id en las dos tabla pues no pasanada excepto que es poco claro... debes cambiar donde yo he puesto idArticulo por id... manteniendo el nombre de la tabla o el alias de SuBConsulta.

En la 6 deben aparecer los mismos campos que aparezcan en las primeras (1,2,3)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 14/09/2011 a las 02:10
  #11 (permalink)  
Antiguo 14/09/2011, 04:48
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Cita:
Iniciado por quimfv Ver Mensaje
Puedes poner * en la linea 1 despues del select y eliminars las lineas 2 y 3, el 6 tambien pudes poner el *, creo, no se que pasa con los campos de distintas tablas que tengan el mismo nombre, yo prefiero hacer una query que solo responda con los campos que necesito con lo que hay que listar los nombres de los campos.

En las lineas 2 y 3 com sbc.nombrecampo y en la 6 como nombretabla.nombrecampo obviamente separados por comas....

Si idArticulo se llama id en las dos tabla pues no pasanada excepto que es poco claro... debes cambiar donde yo he puesto idArticulo por id... manteniendo el nombre de la tabla o el alias de SuBConsulta.

En la 6 deben aparecer los mismos campos que aparezcan en las primeras (1,2,3)
Me gustaría una variación ¿si eliminamos la tabla usuarios y nos quedamos con artículos y comentarios, cómo podría "pintar" no sólo la id del artículo más cometnado (presente en la tabla de comentarios) sino además varios campos de dicho artículo (como título, foto y demás)?

Es decir, ya nos olvidaríamos de la tabla usuarios enlazando únicamente las tablas comentarios y artículos.

Muchas gracias :)
  #12 (permalink)  
Antiguo 14/09/2011, 04:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Un poco de imaginación por favor.... y de intentar entender las cosas.

Código MySQL:
Ver original
  1. SELECT sbc.idarticulo,
  2. ....campos del articulo....,
  3. count(*) total
  4.            .... campos que vas a usar....
  5.            FROM comentarios
  6.              INNER JOIN articulos
  7.               ON comentarios.idarticulo=articulos.idarticulo
  8.           ORDER BY comentarios.fecha DESC LIMIT 100) as sbc
  9. GROUP BY sbc.idarticulo
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #13 (permalink)  
Antiguo 14/09/2011, 04:59
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Cita:
Iniciado por quimfv Ver Mensaje
Un poco de imaginación por favor.... y de intentar entender las cosas.
Estaba editando mi respuesta para agregar una posible solución que buenamente había encontrado justo cuando has respondido

Mil gracias de nuevo. Después de comer me pongo con ello
  #14 (permalink)  
Antiguo 14/09/2011, 08:09
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

pongo esto pero no funciona. Creo que hago algo mal en las líneas 2 (de la tabla de articulos) y 5 (referentes a los campos que quiero llamar para la consulta de la tabal comentarios).

Código MySQL:
Ver original
  1. SELECT sbc.idarticulo,
  2. sbc.titular, sbc.foto, sbc.piefoto
  3. count(*) total
  4.            id, idarticulo
  5.            FROM comentarios
  6.              INNER JOIN articulos
  7.               ON comentarios.idarticulo=articulos.idarticulo
  8.           ORDER BY comentarios.fecha DESC LIMIT 100) as sbc
  9. GROUP BY sbc.idarticulo

¿debería de hacer referencia a la tabla en la línea 5? lo probé pero creo que hay algo que hago mal y desconozco :(

Última edición por David224; 14/09/2011 a las 08:18
  #15 (permalink)  
Antiguo 15/09/2011, 00:54
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Código MySQL:
Ver original
  1. SELECT sbc.id,
  2.              sbc.titular,
  3.              sbc.foto,
  4.              sbc.piefoto,
  5.              count(*) total
  6. FROM (SELECT comentarios.id,
  7.                         articulos.titular,
  8.                         articulos.foto,
  9.                         articulos.piefoto
  10.            FROM comentarios
  11.              INNER JOIN articulos
  12.               ON comentarios.id=articulos.id
  13.           ORDER BY comentarios.fecha DESC LIMIT 100) as sbc
  14. GROUP BY sbc.id

La subconsulta debe dar los campos que quieras mostrar, yo no se como se llaman tus campos, ni en que tabla los tienes, el ejemplo que te puese era a partir de la estructura de tablas que supuse que podias tener, pero debes traducirlo a tu estructura.

En tu ultimo post decias que si pasaba algo porque el idArticulo se llamase id te dige que no siempre que cuando lo uses sepas que quiere decir.... los nombres de los campos en las consultas deben ser los que tengan en las tablas si el id se llama id no pongas otro nombre....

Por cierto si lees el error que te manda mysql igual te da pistas, en este caso seguro que te decia que habia columnas desconocidas...

A ver si ahora te funciona... suerte
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #16 (permalink)  
Antiguo 15/09/2011, 02:54
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Tienes toda la razón, disculpa. Además seguí tu consejo y adapté el nombre del campo de la tabla para diferenciarlo y ver más clara la relación. Ahora quedaría así:

Las tablas son 2:

1ª - comentarios
- id
- ordenarticulo
- fecha


2ª - articulos
- ordenarticulo
- titular
- foto
- piedefoto

/////////////////////////////////////////////

Estoy probando pero lamentablemente no consigo que funcione Sigo haciendo pruebas ahora a partir de la estructura que me propusiste en tu último mensaje, pero si al ver los campos, se te ocurre la solución, me iría de perlas

Nuevamente, muchas graicas por tu ayuda

Última edición por David224; 15/09/2011 a las 03:16
  #17 (permalink)  
Antiguo 15/09/2011, 04:21
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Código MySQL:
Ver original
  1. SELECT sbc.id,
  2.              sbc.titular,
  3.              sbc.foto,
  4.              sbc.piefoto,
  5.              count(*) total
  6. FROM (SELECT comentarios.id,
  7.                         articulos.titular,
  8.                         articulos.foto,
  9.                         articulos.piefoto
  10.            FROM comentarios
  11.              INNER JOIN articulos
  12.               ON comentarios.id=articulos.id
  13.           ORDER BY comentarios.fecha DESC LIMIT 100) as sbc
  14. GROUP BY sbc.id

Con ese código tengo una serie de dudas: En el select que va de las líneas 1 a 5 ¿tengo que repetir los campos que quiero llamar de la tabla de artículos o ahí tendría que poner los campos de la tabla comentarios?

¿Me podrías explciar la línea 12? por lo que veo tiene que ser una concordancia, pero ¿tengo que poner el campo id individual de los registros de comentarios y artículos, o por el contrario tengo que hacer que concuerden el identificador de los artículos con los de sus comentarios?

Muchas gracias por tu ayuda. Ahora seguiré haciendo pruebas con el código. ¿en phpmyadmin también puedo hacer consultas sql que afectan a dos tablas?
  #18 (permalink)  
Antiguo 15/09/2011, 07:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

De la linea 1 a 5 debes poner los campos que vas a mostrar, todos ellos vienen de la subconsulta luego debes poner sbc.nombrecampo, de la 6 a la 9 lo mismo pero con los nombres de sus tablas,... (id en la linea 1 si es el id del comentario no debe estar y en la linea 14 la agrupacion se hace por articulo luego debes tener ordenararticulo)

Liena 12 es donde se le dice como relacionas las dos tablas en este caso ordenarticulo de las dos tablas, (generalmente se usa idArticulo) y la ordenacion se deberia hacer por fecha....

phpmyadmin puedes pegar el codigo que quieras en la ventana que muestra la pestaña SQL...


Yo te puedo ayudar pero buscate un buen manual... te veo muy verde.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #19 (permalink)  
Antiguo 15/09/2011, 11:04
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Código MySQL:
Ver original
  1. SELECT sbc.ordenarticulo,
  2.              sbc.titular,
  3.              sbc.foto,
  4.              count(*) total
  5. FROM (SELECT comentarios.id,
  6.                         comentarios.ordenarticulo,
  7.                         articulos.titular,
  8.                         articulos.foto,
  9.                         articulos.orden,
  10.            FROM comentarios
  11.              INNER JOIN articulos
  12.               ON comentarios.ordenarticulo=articulos.ordenarticulo
  13.           ORDER BY comentarios.fecha DESC LIMIT 100) as sbc
  14. GROUP BY sbc.ordenarticulo

Desde la línea 10 "FROM comentarios..." me da error

MySQL ha dicho: Documentación
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM comentarios
INNER JOIN articulos
ON comentarios' at line 10


Sigo tu consejo y lo sigo mirando. Llevo algo más de una hora mirándolo, pero con poca suerte Se me complica el INNER JOIN con lo que queiro hacer


1ª - comentarios
- id
- ordenarticulo <---- campo de identificador único en la tabla "artículos".
- fecha


2ª - articulos
- ordenarticulo
- titular
- foto
  #20 (permalink)  
Antiguo 15/09/2011, 17:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Tienes una coma luego de articulos.orden.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #21 (permalink)  
Antiguo 16/09/2011, 00:09
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Tienes una coma luego de articulos.orden.
jajjajajajajajajajajajja.. tienes razón, pero además no sólo eso. Seguro que por la quemada de estar una hora mirando las líneas puse mal el campo (ordenarticulos). Ahora quité la coma, como bien dices, y puse bien el campo y funciona :)

Una última pregunta. Veo que el select en custión tarda mucho más que el resto de consulas que hago en ejecutarse. ¿existe algún modo de optimizarla o como se suele decir, "es lo que hay"?

Muchas gracias por todo!
  #22 (permalink)  
Antiguo 16/09/2011, 00:34
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Mostrar temas más populares en los últimos 100 comentarios

Me explicaré mejor respecto al anterior mensaje.

Lo que me gustaría saber es si se puede hacer algo como lo del principio
Código PHP:
<?      
$_MAS_POST 
"";
CONSULTA A LA BASE DE DATOS
$sql 
mysql_query("select id, count(id) total from comentarios group by id order by total desc limit 5");
while(
$row=mysql_fetch_array($sql,MYSQL_ASSOC)){
$_MAS_POST .= '<b>'.$row["id"].'</b>'$rs["total"].'<br>';
}
echo 
$_MAS_POST;

?>
y luego, ya con la cifra de identificación de los registros de los artículos, hacer una nueva llamada a la base de datos y cargar la tabla de artículos "pintando" los datos como título, foto, etc.

Porque creo que al hacer la siguiente llamada se consumen muchos recursos (al menos bajo mi humile opinión al ver el tiempo que tarda en ejecutar la consulta).

Código PHP:
    SELECT sbc.ordenarticulo,
                 
sbc.titular,
                 
sbc.foto,
                 
count(*) total
    FROM 
(SELECT comentarios.id,
                            
comentarios.ordenarticulo,
                            
articulos.titular,
                            
articulos.foto,
                            
articulos.ordenarticulos
               FROM comentarios
                 INNER JOIN articulos
                  ON comentarios
.ordenarticulo=articulos.ordenarticulo
              ORDER BY comentarios
.fecha DESC LIMIT 100) as sbc
    GROUP BY sbc
.ordenarticulo
    ORDER BY total desc LIMIT 5 
Tal vez tenga que ver con optimiación de la base de datos y demás, pero lo pregunto por si las moscas :)

Etiquetas: 100, comentarios, query, select, sql, temas
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 12:28.