Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con tabla master detalle (https://www.clubdelphi.com/foros/showthread.php?t=76638)

amell2020 15-11-2011 03:49:01

Ayuda con tabla master detalle
 
okay amigo yo logre hacer las tablas master detalle bien y me funciona, pero ahora yo quiero sumar el campo total de las tres tablas que tengo como detalle y lo hago con esta consulta desde mi adoquery y lo muestro en un edit llamado Precio Total:

ADOQUERY3.SQL.Text:='SELECT sum( [PRECIO TOTAL] + [COSTO TOTAL] + TOTAL ) AS suma from productos, materiales, servicios WHERE Id_facturacion LIKE ''%'+Edit29.Text+'%''';
ADOQUERY3.Active:=TRUE;


Bueno me explico:
Yo tengo una tabla llamada facturacion, y otras tres que son las Detalle llamadas productos, materiales, servicios.

pero tengo un problema que los datos me aparecen solo cuando tengo los tres registro en cada tabla, si una de la tabla detalle no tiene registro no me muestra nada en el edit precio total.
por favor ayuda amigos

ecfisa 16-11-2011 18:15:16

Cita:

tengo un problema que los datos me aparecen solo cuando tengo los tres registro en cada tabla, si una de la tabla detalle no tiene registro no me muestra nada en el edit precio total.
Hola.

Eso sucede cuando alguno de los campos sumandos tiene valor NULL, ya que: NULL + 1 + 2 + ... + n = NULL.

En Firebird por ejemplo, podrías resolverlo así:
Código SQL [-]
SELECT SUM (COALESCE(PRECIO TOTAL, 0) + COALESCE(COSTO TOTAL ,0) + COALESCE(TOTAL, 0)) AS SUMA
FROM PRODUCTOS, MATERIALES, SERVICIOS
WHERE ...
Ignoro con que motor estas trabajando, pero tendrías que buscar alguna forma de convertir el valor NULL en cero.

Saludos.

amell2020 16-11-2011 22:23:33

estoy usando SQL SERVER, como convertir los valores null en = 0

ecfisa 16-11-2011 22:28:52

Hola.

No conozco la sintáxis de MS SQL Server, pero según este enlace, también soporta la funcion COALESCE.

Un saludo.

fjcg02 16-11-2011 23:00:47

Veo que en la consulta incluyes tres tablas, pero no veo cómo relacionas los registros de las tres. Necesitarás incluir en la SQL 'inner joins' o condiciones entre los campos que relacionan las tablas tras el WHERE.

Ejemplo

Código SQL [-]
SELECT sum( [PRECIO TOTAL] + [COSTO TOTAL] + TOTAL ) AS suma from productos P
INNER JOIN materiales M ON (condicion entre las tablas productos y materiales )
INNE RJOIN servicios S ON ( condicion entre las tablas productos y Servicios )
WHERE Id_facturacion LIKE ''%'+Edit29.Text+'%''';
Es un ejemplo. Además, me huele que te falta alguna tabla, no sé. Deberás incluir los campos de las tablas para saber cómo quedan relacionados.

Un saludo


La franja horaria es GMT +2. Ahora son las 19:50:23.

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