Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Sumar un campo de una tabla relacionada con otras dos (https://www.clubdelphi.com/foros/showthread.php?t=88621)

Delphitest 05-07-2015 18:24:24

Sumar un campo de una tabla relacionada con otras dos
 
Buenas tardes,

a ver si consigo explicar mi duda... :o

Trabajo con delphi XE5, ADO y Access

Tengo tres tablas: Operaciones, Fincas y Seguros

Una operación puede tener varias fincas y cada finca varios seguros.

Para relacionarlas tengo en Operaciones un campo IDOperacion, en Fincas un campo IDOperacion (por lo que puedo tener varias fincas con el mismo IDOperacion) y un IDFinca que identifica la finca, y la tabla Seguros tiene un IDFinca con animo de que una misma finca pueda tener varios seguros.

A nivel de formularios lo tengo hecho con relaciones y funciona bien.

Mi duda es que quiero crear una consulta que me sume el campo que se llama Importe de la tabla seguros para que me diga la suma los importes de los seguros de las fincas de una operación.

Si solo fuesen dos tablas sabría mas o menos hacerlo pero con las 3 no doy con ello.

No se si lo explicado bien, es pero que se entienda.

Gracias por vuestro tiempo

ecfisa 05-07-2015 18:49:13

Hola Delphitest.

Código SQL [-]
SELECT SUM( SE.IMPORTE )
FROM SEGUROS SE
INNER JOIN FINCAS FI ON SE.IDFINCA = FI.IDFINCA
INNER JOIN OPERACIONES OP ON FI.IDOPERACION = OP.IDOPERACION
AND OP.IDOPERACION = :OPER_ID

Saludos :)

Casimiro Notevi 05-07-2015 19:07:48

Un tutorial de SQL no vendrá mal :)

Delphitest 05-07-2015 19:49:46

Muchas gracias,

así da gusto, la solución y un manual de apoyo :)

He sufrido un poco con los paréntesis pero al final funciona perfectamente, ha tenido que quedar así:

Código SQL [-]
SELECT SUM( SE.IMPORTE ) as totalimporte
FROM (SEGUROS SE
INNER JOIN FINCAS FI ON SE.IDFINCA = FI.IDFINCA)
INNER JOIN OPERACIONES OP ON (FI.IDOPERACION = OP.IDOPERACION and OP.IDOPERACION = :OPER_ID)


Gracias por vuestra ayuda

Casimiro Notevi 05-07-2015 20:08:12

Cita:

Empezado por Delphitest (Mensaje 494046)
He sufrido un poco con los paréntesis

Pues no sufras, porque no hacen falta.
En todo caso, déjalos, pero el primero está mal.

Tu código quedaría así:
Código SQL [-]
select sum(se.importe) as totalimporte
from seguros se
inner join fincas fi on (se.idfinca=fi.idfinca)
inner join operaciones op on (fi.idoperacion=op.idoperacion and op.idoperacion= :Oper_id)

Delphitest 05-07-2015 20:43:59

1 Archivos Adjunto(s)
Si lo pongo como dices da un error de sintaxis.

Tanto desde delphi como desde el sql de access.

La verdad es que tiene mas sentido como lo pones pero a base de probar y colocándolo donde digo en el ejemplo sí que funciona.

Pantallazo

Casimiro Notevi 05-07-2015 20:48:33

En fin, las manías de microsoft por hacer las cosas no estandar :o

Lepe 06-07-2015 19:58:22

En la captura sí falta un paréntesis cerrado al final. Hay que darse un paseo de vez en cuando para refrescar los ojitos... a todos nos pasa :o )

Casimiro Notevi 06-07-2015 20:03:56

Cita:

Empezado por Lepe (Mensaje 494085)
En la captura sí falta un paréntesis cerrado al final. Hay que darse un paseo de vez en cuando para refrescar los ojitos... a todos nos pasa :o )

Cierto, ya me extrañaba, es que no tiene sentido esos paréntesis.


La franja horaria es GMT +2. Ahora son las 05:52:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi