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

contar registros

Estas en el tema de contar registros en el foro de Mysql en Foros del Web. Buenos días, tengo una tabla mysql con la siguiente estructura: 1 idinfo int(11) 2 tema varchar(100) 3 info varchar(200) pongo de muestra algunos datos: idinfo ...
  #1 (permalink)  
Antiguo 30/05/2016, 10:07
 
Fecha de Ingreso: septiembre-2003
Mensajes: 251
Antigüedad: 21 años, 2 meses
Puntos: 0
Exclamación contar registros

Buenos días, tengo una tabla mysql con la siguiente estructura:
1 idinfo int(11)
2 tema varchar(100)
3 info varchar(200)
pongo de muestra algunos datos:

idinfo tema info
1 1 titulo A
2 2 titulo b
3 2,4 titulo C
4 3 titulo d
5 4,3,2 titulo x

lo que necesito una consulta mysql que me permita contar cuantos registros hay por cada tema, considerando que es posible que una misma información pueda pertenecer a mas de un tema, según el ejemplo el resultado debería ser:

tema cuantos
1 1
2 3
3 2
4 2

Agradezco mucho su colaboracion
  #2 (permalink)  
Antiguo 30/05/2016, 14:42
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 12 años, 4 meses
Puntos: 39
Respuesta: contar registros

Es una consulta muy sencilla

Código MySQL:
Ver original
  1. SELECT tema, COUNT(tema) as cantidad FROM tabla GROUP BY tema HAVING COUNT(tema) ORDER BY cantidad DESC

Esto debería valerte. Te daría como resultado una lista de todos los temas juntos con la cantidad de veces que está repetido cada tema ordenados de mayor a menor.
__________________
Diseño Web - Arisman Web
  #3 (permalink)  
Antiguo 30/05/2016, 14:56
 
Fecha de Ingreso: septiembre-2003
Mensajes: 251
Antigüedad: 21 años, 2 meses
Puntos: 0
Exclamación Respuesta: contar registros

Primero, muchas gracias por responder, comentar que el resultado es bueno pero el problema es que cuando el campo tema tiene mas de 1 valor (por ejemplo 2,5,4) solo cuenta el primero, testea el query y me arroja
tema | cantidad
2 | 7
5 | 3
1,5,6 | 1

la última fila (1,5,6) solo contabiliza al 1, lo que necesito es que sume esos valores a donde corresponda, es decir deberia quedar asi:

tema | cantidad
2 | 7
5 | 4 //porque en la ultima fila hay un 5 mas
1 | 1
6 | 1

cualquier ayuda lo agradecer mucho
  #4 (permalink)  
Antiguo 30/05/2016, 15:26
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: contar registros

Campos multivaluados es una mala practica en base de datos ya que para eso necesitarias aplicar funciones para obtener los datos que quieres.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 30/05/2016, 16:03
 
Fecha de Ingreso: septiembre-2003
Mensajes: 251
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: contar registros

eso significa que .. no se puede???
  #6 (permalink)  
Antiguo 30/05/2016, 16:52
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 12 años, 4 meses
Puntos: 39
Respuesta: contar registros

Imagino que si te curras una función como ha dicho Libras podrías hacerlo, pero me temo que con tus conocimiento de MySql te va a costar mucho. La pregunta es, ¿por qué metes varios temas en un mismo campo de esa manera?

Como de nuevo ha dicho Libras, hacer ese tipo de cosas no es recomendado en MySql, por cuestiones de la programación a veces se tiene que hacer, pero esos campos te limitan mucho el tema de las consultas y solo lo deberías hacer si esos campos no los vas a consultar como tal, si no que de ahí quieres extraer datos para tratarlos con PHP, por ejemplo, puedes hacer un campo multivaluado guardando imágenes de un producto separándolos de esta manera img/img1.jpg|img/img2.jpg|img/img3.jpg, pero ese campo no lo utilizas para hacer consultas si no que de ahí extraes imágenes que vas a mostrar luego en la web, sencillamente.

Ahora tienes dos opciones, una de dos o reorganizar tu tabla para que cada en el campo tema solo haya un tema o bien, si trabajas con PHP, por ejemplo, extraes todos los datos y te haces una función PHP que te los cuente.
__________________
Diseño Web - Arisman Web
  #7 (permalink)  
Antiguo 30/05/2016, 17:13
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: contar registros

Cita:
Iniciado por rafex Ver Mensaje
eso significa que .. no se puede???
Los campos multivaluados están prohibidos en el modelo relacional de BBDD.
Aparecen cuando un mismo atributo puede tener N valores diferentes, cada uno de los cuales pertenece en realidad a una instancia dada de la relación.
Pero los atributos que pueden adoptar diferentes valores en una misma relación, deben NORMALIZARSE y requieren ser administrados en una tabla separada.
NO PUEDEN meterse en un mismo campo de un registro dado. Si hace eso NO estás creando una base de datos relacional. Estás creando cualquier otra cosa, pero NO es una base relacional.
En esencia, tienes la base e datos MAL DISEÑADA, sin posibilidades de rescate.
Lo que hagas programáticamente serán parches para solucionar un pésimo diseño de datos, pero no serán soluciones.
__________________
¿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; 30/05/2016 a las 17:32

Etiquetas: registros, 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 14:04.