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

Contar cuantos campos con cierta informacion hay en una fila.

Estas en el tema de Contar cuantos campos con cierta informacion hay en una fila. en el foro de Bases de Datos General en Foros del Web. Bueno gente, aquí esta una consulta media complicada pero tratare de explicarme lo mejor que pueda. Tengo La tabla modulos, y dentro de ellas cada ...
  #1 (permalink)  
Antiguo 24/05/2016, 16:39
 
Fecha de Ingreso: junio-2011
Mensajes: 42
Antigüedad: 12 años, 10 meses
Puntos: 0
Contar cuantos campos con cierta informacion hay en una fila.

Bueno gente, aquí esta una consulta media complicada pero tratare de explicarme lo mejor que pueda.

Tengo La tabla modulos, y dentro de ellas cada id de la materia en un campo distinto.
La tratare de dibujar para explicarme mejor.

id-----m01----m02-----m03-----m04----m05-----...m14
1-----12------13--------14-------17-------19----------nada
2-----21------22--------24-------nada----nada--------nada
3-----28------29--------nada----nada----nada--------nada

Como verán el modulo 1 tiene al menos 5 materias (los números son el id de cada materia).
El modulo con el id 2 tiene 3 materias y el modulo con el id 3 tiene 2 materias.

Para inscribir a un alumno debe de haber pasado todas las materias del modulo anterior. Por lo que debo de contar cuantas materias hay en el modulo 1,2 y 3 (son todas menos el campo que incluye 'nada').

Bueno me desangre pensando y no tengo idea de como contarlas.
pues por ejemplo

'select count(*) from modulos wher id=1'
contaría todos los campos y no solo los que dicen 'nada'.

Se me ocurre otra solución que es escribir una sentencia para cada 'm', por ejemplo m01 otra para m02 y así hasta m14 que es el máximo.
Pero debe de haber una forma mas logica y practica que desconozco.

Se les ocurre algo?
Gracias Gente!!
  #2 (permalink)  
Antiguo 25/05/2016, 07:51
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Contar cuantos campos con cierta informacion hay en una fila.

Creo que la estructura de tu tabla no es la correcta, creo que tienes alumnos, materias y modulos no??

seria mejor tener una relacion de esta manera:

Alumnos_materia
id_alumno id_materia

Materias
id_materia nombre

Modulos
id_modulo nombre num_materias

relacion_materias_modulo
id_materia id_modulo


Asi es mas facil obtener cuantas materias por modulo tiene un alumno
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 27/05/2016, 08:07
Avatar de CompuDoc  
Fecha de Ingreso: febrero-2011
Mensajes: 41
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: Contar cuantos campos con cierta informacion hay en una fila.

Concuerdo con Libras, la tabla esta mal diseñada.
  #4 (permalink)  
Antiguo 29/05/2016, 16:06
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: Contar cuantos campos con cierta informacion hay en una fila.

Correcto, si diseñas bien la tabla y coincido en como la diseña Libras, después te será muy fácil
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #5 (permalink)  
Antiguo 08/06/2016, 11:14
 
Fecha de Ingreso: junio-2011
Mensajes: 42
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Contar cuantos campos con cierta informacion hay en una fila.

Perdón la demora, entiendo la propuesta y tienes razón, tiene mas sentido.
Estaba tratando de hacer la menor cantidad de tablas y cosas para que las búsquedas no sean pesadas en el futuro pero creo es imposible.
Voy a reformar las tablas entonces. Gracias Gente!!
  #6 (permalink)  
Antiguo 08/06/2016, 13:53
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, 5 meses
Puntos: 2658
Respuesta: Contar cuantos campos con cierta informacion hay en una fila.

Menor cantidad de tablas, no es más eficiencia. Generalmente significa que hay falta de normalización, y eso es malo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 09/06/2016, 01:06
Avatar de AVBorland  
Fecha de Ingreso: marzo-2016
Ubicación: Moscu
Mensajes: 42
Antigüedad: 8 años, 1 mes
Puntos: 4
Respuesta: Contar cuantos campos con cierta informacion hay en una fila.

Cita:
Iniciado por kapi2454 Ver Mensaje
'select count(*) from modulos wher id=1'
contaría todos los campos y no solo los que dicen 'nada'.
Hola!
"count (*)" contara no los campos, función "count" contara la cantidad de filas en tabla que satisfacen condición en "where". Si en tabla hay una fila, donde id=1 (por ejemplo, campo id es PK), select count(*) from <tabla> where id=1 recuperan siempre 1.

Si quiere usted trastornar la cabeza, puede realizar siguente:
select count(m01)+count(m02)+...+count(m14) where id=1, ese consulta contara la cantidad de campos, que no null y donde id=1, pero tu la estructura de tabla es no corecta. Que decían los interlocutores anteriores.

Última edición por AVBorland; 09/06/2016 a las 01:23

Etiquetas: campos, informacion, select, 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 10:54.