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

Conteo multitabla

Estas en el tema de Conteo multitabla en el foro de Mysql en Foros del Web. Hola ! Estoy trabajando en un proyecto y estoy teniendo un problema con lo siguiente. Un contador de noticias mas comentadas. Lo que hace es ...
  #1 (permalink)  
Antiguo 04/05/2012, 15:28
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Conteo multitabla

Hola !

Estoy trabajando en un proyecto y estoy teniendo un problema con lo siguiente.
Un contador de noticias mas comentadas.
Lo que hace es buscar los comentarios y selecciono los primeros 4 que tienen mayor resultado.
Osea: Noticia nº1 con 50 comentarios.
Noticia nº2 con 30 comentarios.
etc etc.

Hasta ahi estoy bien, pero tengo el problema de que las personas pueden responder a esos comentarios y tengo las tablas separadas.

Este es el script:

Código PHP:
Ver original
  1. <?
  2. $BoxCount = "SELECT `id_noticia`, COUNT(`id`) AS `cantidad` FROM `comments` WHERE `status` = 1 GROUP BY `id_noticia` ORDER BY `cantidad` DESC";
  3. $BoxCount = mysql_query($BoxCount) or die(mysql_error());
  4. while($BCR = mysql_fetch_array($BoxCount)){
  5. echo $BCR['cantidad'];
  6. }
  7. ?>

Eso funciona bien con los comentarios, pero quiero que tambien se cuenten las respuestas a comentarios.


Alguien puede ayudarme con esto?
  #2 (permalink)  
Antiguo 05/05/2012, 12:13
 
Fecha de Ingreso: diciembre-2011
Mensajes: 64
Antigüedad: 12 años, 11 meses
Puntos: 7
Respuesta: Conteo multitabla

veamos si entendi.. tenes una tabla mas que las personas pueden responder a los comentarios de otros usuarios ??

$BoxCount ="select id_noticia, count(idcomentarios) as comen, count(idcomentarios_enrespuesta) as resp from comments a inner join respuestas b on a.id_noticia=b.id_noticia WHERE `status` = 1 GROUP BY `id_noticia` ORDER BY `cantidad` DESC";
$BoxCount = mysql_query($BoxCount) or die(mysql_error());
while($BCR = mysql_fetch_array($BoxCount)){
$total =$BCR['comen'] + $BCR['resp'] ;
echo $BR[id_noticia]." ".$total;
}


si no me equivoco ahi sacarias la cantidad, probalo y decime.
  #3 (permalink)  
Antiguo 07/05/2012, 06:18
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Respuesta: Conteo multitabla

No me funciono :(

En las 2 estructuras tanto de la tabla "comments" y la tabla "responses" son asi

responses + comments
id - id -
id_noticia - id_noticia -


Osea los dos tienen los mismos nombres de tabla.
  #4 (permalink)  
Antiguo 07/05/2012, 08:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Conteo multitabla

Código MySQL:
Ver original
  1.     C.id_noticia IdNoticia,
  2.     COUNT(C.id_noticia) Comentarios,
  3.     COUNT(R2.idcomentarios) Respuestas
  4.     noticias N
  5.     LEFT JOIN comments C ON N.id = C.id_noticia
  6.     LEFT JOIN respuestas R ON C.id_noticia = R.id_noticia
  7. WHERE `status` = 1
  8. GROUP BY N.id
  9. ORDER BY Comentarios, Respuestas DESC

La idea de esto es que una noticia puede tener cero o muchos comentario, y cada comentario puede tener cero o más respuestas. Pero no necesariamente todas las noticias tienen comentarios, ni todos los comentarios tienen respuestas.
Ahora bien, para discriminar cuantas respuestas tiene cada comentario, se requiere hacer un agrupamiento de otro nivel, e incluso sería mejor obtener los subtotales de comentarios y de respuestas a comentarios:
Código MySQL:
Ver original
  1.     C.id_noticia IdNoticia,
  2.     COUNT(C.id_noticia) Comentarios,
  3.     COUNT(R2.idcomentarios) Respuestas
  4.     noticias N
  5.     LEFT JOIN comments C ON N.id = C.id_noticia
  6.     LEFT JOIN respuestas R ON C.id_noticia = R.id_noticia
  7. WHERE `status` = 1
  8. GROUP BY IdNoticia, Comentarios WITH ROLLUP
  9. ORDER BY Comentarios, Respuestas DESC
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 09/05/2012, 14:45
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Respuesta: Conteo multitabla

Voy a probar y te cuento.
  #6 (permalink)  
Antiguo 09/05/2012, 16:21
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Respuesta: Conteo multitabla

No consigo hacerlo funcionar bien.

Te dejo la estructura de las dos tablas.

TABLA COMMENTS
Código TXT:
Ver original
  1. +------------+---------+------+-----+---------+----------------+
  2. | Field      | Type    | Null | Key | Default | Extra          |
  3. +------------+---------+------+-----+---------+----------------+
  4. | id         | int(11) | NO   | PRI | NULL    | auto_increment |
  5. | id_noticia | int(11) | NO   |     | NULL    |                |
  6. | time       | text    | NO   |     | NULL    |                |
  7. | nombre     | text    | NO   |     | NULL    |                |
  8. | email      | text    | NO   |     | NULL    |                |
  9. | show-email | int(2)  | NO   |     | NULL    |                |
  10. | status     | int(2)  | NO   |     | NULL    |                |
  11. | comment    | text    | NO   |     | NULL    |                |
  12. | ip         | text    | NO   |     | NULL    |                |
  13. | fecha      | text    | NO   |     | NULL    |                |
  14. | hora       | text    | NO   |     | NULL    |                |
  15. | neg        | int(11) | NO   |     | 0       |                |
  16. | pos        | int(11) | NO   |     | 0       |                |
  17. +------------+---------+------+-----+---------+----------------+
TABLA RESPONSES
Código TXT:
Ver original
  1. +------------+---------+------+-----+---------+----------------+
  2. | Field      | Type    | Null | Key | Default | Extra          |
  3. +------------+---------+------+-----+---------+----------------+
  4. | id         | int(11) | NO   | PRI | NULL    | auto_increment |
  5. | id_noticia | int(11) | NO   | MUL | NULL    |                |
  6. | id_comment | int(11) | NO   |     | NULL    |                |
  7. | time       | text    | NO   |     | NULL    |                |
  8. | nombre     | text    | NO   |     | NULL    |                |
  9. | email      | text    | NO   |     | NULL    |                |
  10. | status     | int(2)  | NO   |     | NULL    |                |
  11. | response   | text    | NO   |     | NULL    |                |
  12. | ip         | text    | NO   |     | NULL    |                |
  13. | fecha      | text    | NO   |     | NULL    |                |
  14. | hora       | text    | NO   |     | NULL    |                |
  15. | pos        | int(11) | NO   |     | 0       |                |
  16. | neg        | int(11) | NO   |     | 0       |                |
  17. +------------+---------+------+-----+---------+----------------+
  #7 (permalink)  
Antiguo 09/05/2012, 17:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Conteo multitabla

¿Y la tabla Noticias?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 10/05/2012, 21:10
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Respuesta: Conteo multitabla

Código TEXT:
Ver original
  1. +--------------+----------+------+-----+---------+----------------+
  2. | Field        | Type     | Null | Key | Default | Extra          |
  3. +--------------+----------+------+-----+---------+----------------+
  4. | id           | int(255) | NO   | PRI | NULL    | auto_increment |
  5. | titulo       | text     | NO   |     | NULL    |                |
  6. | volanta      | text     | NO   |     | NULL    |                |
  7. | vineta       | text     | NO   |     | NULL    |                |
  8. | autor        | text     | NO   |     | NULL    |                |
  9. | bajada       | text     | NO   |     | NULL    |                |
  10. | cuerpo       | text     | NO   |     | NULL    |                |
  11. | time         | text     | NO   |     | NULL    |                |
  12. | views        | int(255) | NO   |     | 0       |                |
  13. | grado        | int(2)   | NO   |     | NULL    |                |
  14. | bloque       | int(2)   | NO   |     | NULL    |                |
  15. +--------------+----------+------+-----+---------+----------------+

Saque algunos datos de filas que no venian al caso.
  #9 (permalink)  
Antiguo 15/05/2012, 08:19
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Respuesta: Conteo multitabla

¿Alguna idea?
  #10 (permalink)  
Antiguo 20/05/2012, 08:36
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Respuesta: Conteo multitabla

¡ De verdad necesito esta ayuda !
  #11 (permalink)  
Antiguo 12/06/2012, 08:34
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 14 años
Puntos: 1
Respuesta: Conteo multitabla

¡¡¡¡¡ Ayuda !!!!!

Etiquetas: conteo, multitabla, select, sql, tabla
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 09:26.