Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Duda con los JOINS por la izquierda o derecha (https://www.clubdelphi.com/foros/showthread.php?t=12394)

agova 15-07-2004 01:49:17

Duda con los JOINS por la izquierda o derecha
 
Hola A Todos
Alguien Sabe Como Hacer Para Que Un Join (ya Sea Por Izquierda O Por Derecha) No Devuelva Valores Nulos, La Consulta Es Algo Asi:

Select Folio, Fecha, Total, Sum(monto) As Pagado
From Nventa Left Join Pagonv On Nventa.folio=pagonv.folionv
Group By Folio,nventa.fecha,total

La Consulta Lo Que Hace Es Obtener La Suma De Lo Pagado Por Cada Nota De Venta, Pero Al No Haber Pago (en La Tabla De Detalle) Me Regresa Valores Nulos Y Yo Lo Que Necesito Es Que Coloque Ceros En Dichos Registros.

De Antemano Gracias Por Su Atencion.

agova 15-07-2004 19:10:11

¡¡¡¡bingo!!!!
 
He llegado a una solucion aparentemente buena pero si alguien conoce otra mejor estoy abierto a sus comentarios.

La forma en que lo solucione fue la siguiente: Realice una UNION con una tabla con campos CEROS en los campos numéricos y los mismos niveles de agrupamiento, por tanto me devuelve una tabla con los mismos registros pero en los valores númerico tiene CEROS, luego simplemente con otra consulta obtengo con la clausula MAX los valores maximos y ¡¡¡¡BINGO!!!! obtengo el resultado deseado de CEROS EN LUGAR DE NULOS.

Si alguien conoce otra forma mejor hagamela saber.
Espero le sirva a los que tienen el mismo problema que yo.

Saludos.

guillotmarc 16-07-2004 11:40:27

Hola.

Una solución es usar inner joins, que solo te va a unir registros existentes, por lo que siempre tendrán valor, y podrás sumarlos.

Otra solución es utilizar funciones como COALESCE(valor1, valor2) que devuelven el primer valor no nulo. De esta forma puedes indicar que quieres sumar el valor de un campo, o bien un 0 en caso de que el campo sea nulo.

Es decir :

select sum(coalesce(campo, 0)), ....
from ....

NOTA: Dependiendo del Servidor SQL que utilizes, habrá disponibles unas u otras funciones : COALESCE, ISNULL, NVL, ....

Saludos.

agova 16-07-2004 16:34:15

El detalle esta en que necesito presisamente que me devuelva todos los registros por eso uso LEFT JOIN y necesito todos los valores no solo el primer no nulo.

guillotmarc 16-07-2004 17:12:44

Cita:

Empezado por agova
El detalle esta en que necesito presisamente que me devuelva todos los registros por eso uso LEFT JOIN y necesito todos los valores no solo el primer no nulo.

:confused: :confused: Vuelve a leer mi mensaje :confused: :confused:

La función COALESCE o una similar es exactamente lo que necesitas.

Saludos.


La franja horaria es GMT +2. Ahora son las 19:56:21.

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