Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-04-2010
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Question Que una consulta me regrese cero en lugar de null

Hola mis amigos, estoy trabado aqui con una consulta y ya le estuve investigando y no le encuentro.

Yo necesito mostrar el resultado de la siguiente consulta:

Código SQL [-]
select idCredito, fecha, hora, vence, idCliente, clientes.nombre, idVendedor, vendedores.nombre as nombrevendedor,
 (select sum(cantidad*p_venta) from detallecreditos where detallecreditos.idCredito = creditos.idCredito) as importe,
 acuenta, 
 (select sum(monto) from abonos where abonos.idCredito = creditos.idCredito) as abonos, 
 (select sum(cantidad*p_venta) from detallecreditos where detallecreditos.idCredito = creditos.idCredito)- 
                 (select sum(monto) from abonos where abonos.idCredito = creditos.idCredito)  - acuenta as saldo,  
if (pagado,'Si', 'No' ) as Liquidada

from creditos join clientes on idCliente=id_cliente
join vendedores on idVendedor=id_vendedor
order by idCredito

En la, tengo cual como podrán apreciar 3 tablas:
Creditos, que es la tabla que me guarda los datos de las ventas a crédito (no. de venta, el cliente, el cajero, la fecha, pago a cuenta y vencimiento)
detalleCreditos que contiene los articulos vendidos en la venta a credito correspondiente (idCredito, idProducto, cantidad, precio de compra, precio de venta)
y Abonos que me registra los pagos que el cliente va haciendo a la nota de crédto (idcliente, idcredito, fecha, monto)

Ahora el problema es que cuando realizo la consulta si el cliente no tiene abonos me arroja valor nulo en el saldol. Esto se puede solucionar si en la consulta en lugar de que me arroje un null me arroje un cero cuando no tiene abonos. Ahi esta el detalle, como le hago para que me arroje un cero.

Aqui pongo la captura del resultado de la consulta



Desde ya, muchas gracias por su ayuda.
Responder Con Cita
  #2  
Antiguo 05-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No sé qué base de datos usas, pero echa un vistazo a "coalesce"

Edito: http://www.firebirdsql.org/pdfmanual...n-Firebird.pdf

Última edición por Casimiro Notevi fecha: 05-04-2010 a las 21:03:12.
Responder Con Cita
  #3  
Antiguo 05-04-2010
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Talking Perdón...

Mil disculpas, olvidé semenjante detalle:

Uso MySQL 5.2.33
y adicionalmente Delphi 7 y ZeosLib 6.6

Un saludo.
Responder Con Cita
  #4  
Antiguo 05-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Echa un vistazo a los enlaces del final de esta página, abajo del todo, ahí encontrarás lo que buscas, es que no sé qué comando es en mysql.
Responder Con Cita
  #5  
Antiguo 05-04-2010
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Unhappy De hecho

Gracias Casimiro por el tip, de hecho ya revise la mayoría de los hilos referentes pero no encuentro algo util.
Sigo buscando.

Responder Con Cita
  #6  
Antiguo 05-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Puede ser así en mysql?, creo que es igual que en firebird

SELECT COALESCE(NULL,0);
Responder Con Cita
  #7  
Antiguo 05-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ya lo encontré buscando en clubdelphi: NVL(<campo de la tabla>, <valor por defecto>)

O sea:
nvl(carga, 0)
Responder Con Cita
  #8  
Antiguo 05-04-2010
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Talking ya jaló

Hola de nuevo Casimiro

Gracias por el tip, de hecho buscándole encontré una funcion similar, ya resolví el asunto y aquí les dejo como hice la consulta por si a alguien le pueda servir en el futuro.

Código SQL [-]
select idCredito, fecha, hora, vence, idCliente, clientes.nombre, idVendedor, vendedores.nombre as nombrevendedor,
(select sum(cantidad*p_venta) from detallecreditos where detallecreditos.idCredito = creditos.idCredito) as importe, acuenta, 
(select IFNULL(sum(monto),0) from abonos where abonos.idCredito = creditos.idCredito) as abonos, 
(select sum(cantidad*p_venta) from detallecreditos where detallecreditos.idCredito = creditos.idCredito)- 
  (select IFNULL(sum(monto),0) from abonos where abonos.idCredito = creditos.idCredito)  - acuenta as saldo,  
if (pagado,'Si', 'No' ) as Liquidada
from creditos join clientes on idCliente=id_cliente
join vendedores on idVendedor=id_vendedor
order by idCredito

Checar la parte de IFNULL...
Responder Con Cita
  #9  
Antiguo 05-04-2010
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Talking Simplificada

Jaja, no dejo de aprender cosas nuevas, un amigo en enseño como simplificar las consultas:

Código SQL [-]

select
 idCredito, fecha, hora, vence, idCliente, nombre, idVendedor, 
 nombrevendedor, importe, acuenta, abonos, importe-acuenta-abonos as saldo

from (
  select idCredito, fecha, hora, vence, idCliente, clientes.nombre, idVendedor, vendedores.nombre as nombrevendedor,
(select sum(cantidad*p_venta) from detallecreditos where detallecreditos.idCredito = creditos.idCredito) as importe, acuenta, 
(select IFNULL(sum(monto),0) from abonos where abonos.idCredito = creditos.idCredito) as abonos, 
if (pagado,'Si', 'No' ) as Liquidada
from creditos join clientes on idCliente=id_cliente
join vendedores on idVendedor=id_vendedor) as datos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta en Cero si no se encuentra datos ingabraham SQL 14 06-01-2009 20:55:16
Consulta en campos Null| pmtzg Conexión con bases de datos 2 26-02-2008 02:38:51
Consulta con Null T-man Firebird e Interbase 3 22-12-2004 23:30:56
select (pero un cero en vez de NULL) Osorio SQL 5 06-08-2004 23:16:15
Crystal Reports desde cero, cero, cero. Repelus Impresión 1 08-03-2004 22:23:14


La franja horaria es GMT +2. Ahora son las 13:42:20.


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