Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-07-2004
agova agova is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 21
agova Va por buen camino
Question 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.
Responder Con Cita
  #2  
Antiguo 15-07-2004
agova agova is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 21
agova Va por buen camino
Smile ¡¡¡¡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.
Responder Con Cita
  #3  
Antiguo 16-07-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 16-07-2004
agova agova is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 21
agova Va por buen camino
Thumbs up

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.
Responder Con Cita
  #5  
Antiguo 16-07-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
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.
Vuelve a leer mi mensaje

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

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:28:26.


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
Copyright 1996-2007 Club Delphi