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

Problemas con suma sencilla de un select con or, in.

Estas en el tema de Problemas con suma sencilla de un select con or, in. en el foro de Mysql en Foros del Web. Buenas Noches Comunidad, Tengo este problema y no se como resolverlo me gustaría que me ayudaran a resolverlo. Tengo una tabla llamada RESPUESTAS , con ...
  #1 (permalink)  
Antiguo 26/02/2014, 02:28
 
Fecha de Ingreso: noviembre-2012
Ubicación: Tegucigalpa
Mensajes: 94
Antigüedad: 12 años
Puntos: 0
Problemas con suma sencilla de un select con or, in.

Buenas Noches Comunidad,

Tengo este problema y no se como resolverlo me gustaría que me ayudaran a resolverlo.

Tengo una tabla llamada RESPUESTAS, con sus campos id, ab, c1, c2, d1. Lo que deseo es hacer una consulta en donde me sume cada campo, pero dependiendo del campo que se elija. Ejemplo:

id | ab | c1 | c2 | d1 | d2|
1 | 0 | 1 | 0 | 0 | 0 |
2 | 1 | 0 | 0 | 0 | 1 |
3 | 0 | 0 | 3 | 5 | 0 |
4 | 3 | 1 | 0 | 0 | 2 |

Entonces quiero una consulta que por ejemplo solamente pueda sumar los campos AB y C1 sean mayores o iguales que uno. Y que el resultado sea así:
ab | c1 | c2 | d1 | d2|
4 | 2 | 0 | 0 | 0 |

Hice esta consulta entre muchas y el resultado no es como debería de serlo.

Código SQL:
Ver original
  1. SELECT SUM(ab), SUM(c1), SUM(c2),  SUM(d1) ,  SUM(d2) FROM respuestas WHERE id=8 AND id IN( SELECT id_programa FROM respuestas WHERE ab>=1 OR c1>=1)

Tal vez me estoy ahogando en un vaso con agua sin sentido jajajajajaja.. Pero no logro hacerlo.

Les agradeceré muchisisisisisisisisisimo de ante mano su ayuda, serán mi salvación.
  #2 (permalink)  
Antiguo 26/02/2014, 04:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Problemas con suma sencilla de un select con or, in.

Cita:
AB y C1 sean mayores o iguales que uno.
Código MySQL:
Ver original
  1. SELECT SUM(...lo que sea...)
  2. FROM respuestas
  3. WHERE ab>=1 AND c1>=1

Esto sumara "lo que sea" teniendo en cuenta solo los registros que cumplan el WHERE

Código MySQL:
Ver original
  1. SELECT ab, c1, SUM(c2),  SUM(d1) ,  SUM(d2) FROM respuestas
  2. GROUP BY ab, c1

Cita:
id | ab | c1 | c2 | d1 | d2|
1 | 0 | 1 | 0 | 0 | 0 |
2 | 1 | 0 | 0 | 0 | 1 |
3 | 0 | 0 | 3 | 5 | 0 |
4 | 3 | 1 | 0 | 0 | 2 |

Entonces quiero una consulta que por ejemplo solamente pueda sumar los campos AB y C1 sean mayores o iguales que uno. Y que el resultado sea así:
ab | c1 | c2 | d1 | d2|
4 | 2 | 0 | 0 | 0 |
Pon un ejemplo coherente de los datos de origen y del resultado esperado....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 26/02/2014 a las 05:03
  #3 (permalink)  
Antiguo 26/02/2014, 08:56
 
Fecha de Ingreso: noviembre-2012
Ubicación: Tegucigalpa
Mensajes: 94
Antigüedad: 12 años
Puntos: 0
Respuesta: Problemas con suma sencilla de un select con or, in.

Muchisimas Gracias por tomarte el tiempo y responder quimfv,

Lo siento si no me he explicado correctamente con mi ejemplo, pero en realidad así se llama mi tabla y los campos, ya que estoy utilizando los niveles socio económicos de la población. Y ese es el resultado que espero, por la razón que estoy programando y es necesario que solo se imprima una fila en la suma, independientemente cuantos campos de la tabla quiera sumar.

Solo para detallar un poco la estructura de la tabla, que ayer era muy de noche y me salte lo importante:
(solo un campo tiene un número mayor de uno (1) en cada fila, los demás son ceros (0) por lo cual en cada registro existen 3 campos con valor 0 y solamente un campo con valor de mayor o igual que 1; es por eso que se me dificulta mucho hacer la consulta)
id | ab | c1 | c2 | d1 | d2|
1 | 0 | 1 | 0 | 0 | 0 |
2 | 1 | 0 | 0 | 0 | 0 |
3 | 0 | 0 | 3 | 0 | 0 |
4 | 0 | 0 | 0 | 0 | 2 |

Si tomo este codigo:
Código SQL:
Ver original
  1. SELECT SUM(...lo que sea...)
  2. FROM respuestas
  3. WHERE ab>=1 AND c1>=1
Entonces solamente me sumarían las filas que cumplieran esa condición que los dos campos sean mayores o iguales que uno. Y me gustaría que sumarán cualquier fila que cumpla esa condición. Y el problema ha sido que si le añado el OR a la sentencia, me suma cualquier registro y no se porque.

Si uso este código:
Código SQL:
Ver original
  1. SELECT ab, c1, SUM(c2),  SUM(d1) ,  SUM(d2) FROM respuestas
  2. GROUP BY ab, c1
Pues saldrían dos lineas de respuestas en la consulta y como mencionaba anteriormente, si es posible realizarlo con una sola linea de resultado cuando realice la consulta.

De verdad muchísimas gracias por la ayuda. De corazón lo digo.
  #4 (permalink)  
Antiguo 27/02/2014, 01:44
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Problemas con suma sencilla de un select con or, in.

Código MySQL:
Ver original
  1. SELECT Sum(ab) Sab,
  2.              Sum(c1) Sc1,
  3.              Sum(c2) Sc2,
  4.              Sum(d2) Sd2
  5. FROM respuestas
  6. WHERE ab>=1 OR c1>=1;

Esto funciona, siempre que los datos cumplan lo que has descrito si no no. De hecho tambien funciona si no lo cumplen pero claro si los datos no son los que esperas el resultado tampoco.

Con el primer juego de datos que posteaste no sale

Cita:
id | ab | c1 | c2 | d1 | d2|
1 | 0 | 1 | 0 | 0 | 0 |
2 | 1 | 0 | 0 | 0 | 1 |
3 | 0 | 0 | 3 | 5 | 0 |
4 | 3 | 1 | 0 | 0 | 2 |
Cita:
(solo un campo tiene un número mayor de uno (1) en cada fila, los demás son ceros (0) por lo cual en cada registro existen 3 campos con valor 0 y solamente un campo con valor de mayor o igual que 1; es por eso que se me dificulta mucho hacer la consulta)
(solo el registro 1 cumple lo que describes en el segundo post)

Cita:
id | ab | c1 | c2 | d1 | d2|
1 | 0 | 1 | 0 | 0 | 0 |
2 | 1 | 0 | 0 | 0 | 0 |
3 | 0 | 0 | 3 | 0 | 0 |
4 | 0 | 0 | 0 | 0 | 2 |
Esto si.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 27/02/2014 a las 01:51

Etiquetas: campo, select, sencilla, suma, 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 19:16.