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

estoy atascado con una consulta sql (SUM)

Estas en el tema de estoy atascado con una consulta sql (SUM) en el foro de Mysql en Foros del Web. Hola a todos, estoy personalizando un sugarcrm, y necesito almacenar la suma total de horas dedicadas de un empleado, por lo que he creado un ...
  #1 (permalink)  
Antiguo 16/11/2011, 11:55
Avatar de garciasanchezdani  
Fecha de Ingreso: noviembre-2011
Mensajes: 429
Antigüedad: 12 años, 5 meses
Puntos: 51
Exclamación estoy atascado con una consulta sql (SUM)

Hola a todos, estoy personalizando un sugarcrm, y necesito almacenar la suma total de horas dedicadas de un empleado, por lo que he creado un nuevo campo para almacenarlo ahí. Hasta aquí bien, pero mi problema viene con la consulta sql:

Código PHP:
("SELECT SUM(cantidaddieta_c) FROM actividadestrabajos_cstm
        HAVING SUM = ('SELECT cantidaddieta_c FROM actividadestrabajos_cstm,
        actividadestrabajos WHERE assigned_user_id={$bean->assigned_user_id} and id=id_c')"
); 
Con esta consulta trato de coger primero las horas de un empleado (cantidaddieta_c almacena las horas), para después obtener la suma de esas horas...pero no está bien implementando pues el campo que almacena la suma no se rellena...
Espero vuestra ayuda
Daniel
  #2 (permalink)  
Antiguo 16/11/2011, 12:52
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: estoy atascado con una consulta sql (SUM)

Creo que a la columna SUM (cantidaddieta_c), debes colcarle un AS:

SUM (cantidaddieta_c) as sumatoria HAVIN sumatoria=......

Ya probaste directamente en el motor de la base de datos?............y otra pregunta, para que se HAVING ?....
  #3 (permalink)  
Antiguo 16/11/2011, 13:41
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: estoy atascado con una consulta sql (SUM)

Cita:
Iniciado por garciasanchezdani Ver Mensaje
Hola a todos, estoy personalizando un sugarcrm, y necesito almacenar la suma total de horas dedicadas de un empleado, por lo que he creado un nuevo campo para almacenarlo ahí. Hasta aquí bien, pero mi problema viene con la consulta sql:

Código MySQL:
Ver original
  1. SELECT SUM(cantidaddieta_c) FROM actividadestrabajos_cstm
  2.         HAVING SUM = ('SELECT cantidaddieta_c FROM actividadestrabajos_cstm,
  3.         actividadestrabajos WHERE assigned_user_id={$bean->assigned_user_id} and id=id_c')
Con esta consulta trato de coger primero las horas de un empleado (cantidaddieta_c almacena las horas), para después obtener la suma de esas horas...pero no está bien implementando pues el campo que almacena la suma no se rellena...
Espero vuestra ayuda
Daniel
Porque ese HAVING intenta comparar algo (que no existe) con una cadena de texto que contiene una subconsulta que no se ejecuta...
Eso es cualquier cosa, pero no es SQL...
Acuérdate que un apóstrofe entre comillas queda como apóstrofe en la cadena, por lo que pasa al MySQL como apóstrofe, y en MySQL los apóstrofes encierran ... cadenas de texto.

Yendo al ejemplo que supones haber puesto, si lo que quieres hacer es que te devuelva la suma de ese campo, cuando esa suma sea igual al valor del camop en la misma tabla, eso sólo sucederá si el campo es NULL y por tanto el valor es cero, o si sólo hay un registro. Es una cuestión de lógica: Si estás sumando valores, jamás el resultado será igual al valor de uno sólo de sus miembros.
Además, en el extremos de los casos esa subconsulta te devolvería una lista de valores y no un único valor, por lo que tampoco daría un resultado, sino que produciría un error de ejecución.

Como puedes apreciar, la consulta está mal hecha por varios lados.

¿Qué es exactamente lo que quieres obtener?
__________________
¿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; 16/11/2011 a las 15:20
  #4 (permalink)  
Antiguo 17/11/2011, 01:16
Avatar de garciasanchezdani  
Fecha de Ingreso: noviembre-2011
Mensajes: 429
Antigüedad: 12 años, 5 meses
Puntos: 51
Respuesta: estoy atascado con una consulta sql (SUM)

¡Muchas gracias por sus respuestas!
Cita:
¿Qué es exactamente lo que quieres obtener?
Tengo dos tablas: actividadestrabajos_cstm, y actividadestrabajos
  1. tabla actividadestrabajos_cstm: entre otros campos, contiene el campo cantidaddieta_c del cual quiero obtener la suma
  2. tabla actividadestrabajos: contiene el campo assigned_user_id que es el que necesito para comparar con el usuario actual del programa (de ahí el $bean->assigned_user_id que lo contiene al usuario actual)
Entonces,lo que quiero obtener exactamente es la suma del campo cantidaddieta_c del usuario actual, sé que tengo que hacer el join de las dos tablas por sus ids, que son iguales, es decir, idtabla1=idtabla2.
Espero sus respuestas
Saludos
Daniel
  #5 (permalink)  
Antiguo 17/11/2011, 02:33
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: estoy atascado con una consulta sql (SUM)

Dinos los campos de las tablas o al menos los relevantes...

Ejemplo

Usuarios
id
usuario

Compras
id
idUsuario
importe


Código MySQL:
Ver original
  1. SELECT u.usuario, SUM(c.importe)
  2. FROM usuarios u INNER JOIN compras c
  3. ON u.id=c.idusuario
  4. WHERE u.id=X
  5. GROUP BY u.usuario

donde X debe ser el id del usuario actual
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: atascado, select, sql
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 01:58.