FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Agregar SUM a una consulta
Hola a todos!!
Tengo un problema con una consulta que es para un reporte y necesito sumar algunos campos de ella. El diagrama de la base de datos lo he adjuntado, y por favor no sean mal pensados, usé Access para dibujar las relaciones y poder mostrárselas, nada más. He llegado hasta esta consulta, como verán hace un resumen de los pagos que debe recibir un trabajador. Por cada demanda de trabajo que el trabajador haya satisfecho, se genera un registro en la tabla DEMANDAPERSONAL. En la consulta que sigue se obtienen todos los pagos que debería recibir un trabajador, pero tengo que modificarla para que me muestre la suma total que debe recibir, es decir, la suma de todos los registros del trabajador y de los campos DEMANDAPERSONAL_EUROS y DEMANDAPERSONAL_EUROSAJUSTE. He intentado varias formas de insertar la función SUM pero no me sale, ¿alguien tiene alguna idea?
Creo que me falto decir que uso Interbase 6.
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
#2
|
||||
|
||||
Quería hacer un comentario sobre SUM. Siempre que he leído o consultado manuales de SQL, para aprender el uso de funciones como esta, me encuentro con ejemplos del tipo:
a lo sumo, alguna incluye un ejemplo con agrupación de registros, al estilo:
Pero cuando he necesitado el uso de esta función, siempre ha sido en casos de consulta a más de una tabla, al estilo:
Y en esos momentos me gustaría insertar un SUM algo así:
Pero siempre me marca error. Lo que no me termina de quedar claro es si se puede ocupar la función SUM cuando estas consultando más de una tabla. Nunca he visto un ejemplo donde se muestre ese caso. Si alguno tiene una consulta como la que menciono, le agradecería que la pusiera para poder ver como se hace, ya que así sabría como resolver el problema del mensaje anterior.
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
#3
|
|||
|
|||
La manera correcta de usar SUM,COUNT.. debe estar siempre relacionada con la AGRUPACION( GROUP ) que indiques.. y deben de ser los campos que anteceden a la SUM... en este caso seria asi...
Espero te aclare un poco esto...
__________________
Poco ha de saber el que no pregunta.. Yo por eso soy un pregunton |
#4
|
||||
|
||||
Cita:
Voy a probarlo, ya que en realidad sólo necesito agrupar por el código, pero si necesito el resto de los datos. Gracias por tu respuesta.
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. Última edición por Gabo fecha: 08-10-2007 a las 17:55:22. |
#5
|
||||
|
||||
Lo acabo de probar y no funciona...
Ese es el asunto, que necesito que la consulta obtenga más datos de las tablas... Seguiré intentándolo. Si doy con la solución les avisaré.
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
#6
|
||||
|
||||
Cita:
¿Por qué no nos dices lo que quieres conseguir para poder ayudarte mejor?, porque lo de querer obtener un acumulado por un campo que no agrupas no tiene mucho sentido, ya que el resultado como te dije anteriormente sería siempre 1. Un saúdo, y espero poder ayudarte.
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) |
#7
|
||||
|
||||
Es que la función de agrupación funciona así y punto.... no hay más vueltas. Si incluyes una función Sum, avg,etc, debes poner todos los demás campos en el group by
Si por un lado necesitas sumas y además otros campos, realiza 2 consultas, una con el Sum y la otra con los datos que necesitas. En casos complejos, se puede usar un Procedimiento almacenado (si tu SGBBDD lo permite). Edito: acabo de ver que usas Interbase, aquí va un ejemplo de un SP de selección:
Forma de uso:
Como ves en el ejemplo, puedes hacer lo que te apetezca, realmente lo que se hace es construir un registro a mano, como si fuera un puzzle, añadiendo los valores que nos apetezca. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 10-10-2007 a las 11:09:21. |
#8
|
||||
|
||||
Cita:
Si tienes una tabla PERSONAL con dos campos nada más PERSONAL_CODIGO y PERSONAL_NOMBRE y otra TRABAJOS con los campos TRABAJOS_CODIGO, PERSONAL_CODIGO y TRABAJOS_MONTO y deseas obtener un reporte de éste tipo: Código:
NOMBRE MONTO PEDRO 1.023 JOSE 1.114 etc...
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
#9
|
||||
|
||||
Cita:
Cita:
Ya que con eso si lo podría lograr. Cita:
Pero veo que ahí está la solución al problema, asi que... Lamentablemente hoy no estoy en la oficina, pero mañana, en cuanto llegué, probaré eso y les contaré... Gracias por la ayuda!!!!
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. Última edición por Gabo fecha: 10-10-2007 a las 12:03:42. |
#10
|
||||
|
||||
Cita:
Te va a devolver los mismos registros agrupar por código sólo que agrupar por codigo y nombre, pero si quieres incluir el nombre en la select tiene que incluirlo tambien en el group by. Para lo que tu quieres no te hace falta usar un procedimiento almacenado Un saúdo.
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) |
#11
|
||||
|
||||
Cita:
Prometo probarlo mañana en cuanto llegue a la oficina. Gracias!!!!
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
#12
|
||||
|
||||
Creo que estás confundiendo el group by con el order by.
El group by agrupa los registros de una select por los campos indicados e decir si tienes : Código:
Personal.id Personal.nombre Trabajos.monto 1 Breogan 100 1 Breogan 50 2 Brais 100 3 Uxía 150 4 Saleta 25 3 Uxía 10 Código:
Personal.id Personal.nombre Trabajos.monto 1 Breogan 150 2 Brais 100 3 Uxía 160 4 Saleta 25 Un saúdo
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) Última edición por Ivanzinho fecha: 10-10-2007 a las 13:44:55. |
#13
|
||||
|
||||
Bueno no es ese en realidad mi problema, creo que en mi mensaje anterior no me explique bien.
Cita:
Código:
Personal.id Personal.nombre Trabajos.monto 1 Breogan 100 1 Breogan 50 2 Brais 100 3 Uxía 150 4 Saleta 25 5 Uxía 10 <--- Nota que he cambiado el código Código:
Personal.id Personal.nombre Trabajos.monto 1 Breogan 150 2 Brais 100 3 Uxía 160 4 Saleta 25
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
#14
|
||||
|
||||
Pero por eso tienes que agrupar por nombre y código, así se seleccionarán los distintos valores de la tupla (codigo, nombre), es decir, en el ejemplo que pusiste tu (3, Uxía) <> (5, Uxía), por lo que la consulta devolvería dos registros y no sólo uno.
Un saúdo.
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) |
#15
|
|||
|
|||
A Veces la Mejor Manera de APRENDER es un LEER e intentar comprender.
Cita:
Cita:
Va de Nuez... Puedes hacer una CONSULTA
Ya entonces creada tu vista puedes jugar con ELLA..
__________________
Poco ha de saber el que no pregunta.. Yo por eso soy un pregunton Última edición por pcicom fecha: 10-10-2007 a las 17:41:25. |
#16
|
||||
|
||||
Si eso hago, leo e intento comprender.
Lo que me dijiste en un principio, lo entendí claramente, pero insistí un poco porque hasta ese momento no sabía que agrupando por varios campos no se mezclaban los registros y quería saber si existía alguna manera especial de hacer lo que pretendía. Claro, cuando Lepe me dijo: Cita:
Hasta que Ivanzinho me aclaro el otro punto que desconocía. Gracias por la ayuda, ya que me ha servido para aclarar algunos conceptos que no tenía claros.
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
#17
|
||||
|
||||
Cita:
Gracias por tu ejemplo, que me servirá para aprenderlo.
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
#18
|
||||
|
||||
Cita:
No más por eso dejaré que seas milenario primero... El que no entiende, haca clic aquí.
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
#19
|
||||
|
||||
... Como veis... yo también aprendo de vosotros
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#20
|
||||
|
||||
Cita:
Cita:
Un saúdo.
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
agregar componentes | Lucass | Varios | 10 | 28-07-2007 02:27:52 |
problemas agregar una pc con S.O win 98 a una red | pollo_c | Internet | 1 | 27-02-2007 19:02:28 |
Como agregar a una lista los nombres de los campos de una consulta. | Luis | Conexión con bases de datos | 2 | 11-11-2004 21:55:56 |
Agregar items a un comboBox desde una consulta de MYSQL | Juan Carlos | Conexión con bases de datos | 3 | 29-05-2004 22:49:09 |
Quiero saber como agregar una consulta de SQL a un combobox | Julio César | Varios | 4 | 15-01-2004 13:47:44 |
|