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 10-06-2010
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Sql con rigth join

Saludos!

Tengo esta sentencia donde necesito buscar en 3 tablas diferentes.
Código SQL [-]
select ticket.serie, ticket.indticket, ticket.factura, ticket.fecha, totalpagar, enviado, 
sum(notacredito.total) as nc ,
ctasporcbr.importe, ctasporcbr.tipopago
from ticket 
right join notacredito on (notacredito.serie=ticket.serie and notacredito.ticket=ticket.indticket) 
right join ctasporcbr on (ctasporcbr.serie=ticket.serie and ctasporcbr.indticket=ticket.indticket)
where tautoriza="159" and ticket.fecha between '2010-06-09' and '2010-06-09' group by serie

esta buscando los datos en las 3 tablas y lo hace, el problema es cuando en algunas de las tablas (notacredito o ctasporcbr) no hay informacion, aqui se pierden algunos datos, ¿Como puedo hacer que aun que en ninguna o solo en una tabla esten los datos no se pierda?
Me refiero a que me muestre la informacion aun que solo aparesca en 2 tablas o en 1

Desde ya Gracias!!
Responder Con Cita
  #2  
Antiguo 10-06-2010
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Hola!

Ya he logrado resolver el caso, en la segunda sentencia del join, debe ser un left y woala se resuelve, ahora el caso es que me da (NULL)

Código SQL [-]
select ticket.serie, ticket.indticket, ticket.factura, ticket.fecha, totalpagar, enviado, 
sum(notacredito.total) as nc, 
(case when ctasporcbr.importe="(NULL)" then ctasporcbr.importe="0.00" else ctasporcbr.importe end)as PagoForaneo,  
(case when ctasporcbr.tipopago="(NULL)" then ctasporcbr.tipopago="Sin Cargo" else ctasporcbr.tipopago end) as FormaPago,
(totalpagar-(sum(notacredito.total)+ctasporcbr.importe))as totalfinal
from ticket 
right join notacredito on (notacredito.serie=ticket.serie and notacredito.ticket=ticket.indticket) 
left join ctasporcbr on (ctasporcbr.serie=ticket.serie and ctasporcbr.indticket=ticket.indticket)
where tautoriza="159" and ticket.fecha between '2010-06-09' and '2010-06-09' group by serie

Saben como puedo hacer una operacion para que no me muestre el resultado como (NULL)?

Dejo la sentencia

SALUDOS!!
Responder Con Cita
  #3  
Antiguo 10-06-2010
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

Tendrías que decirnos que motor de base de datos estás usando. Si es Firebird podrías usar la sentencia case.

Código SQL [-]
select 
  case
    when Campo is null then 0
  else
    Campo
  end AliasCampo
from
  Tabla


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #4  
Antiguo 10-06-2010
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Utilizo MYSQL

He puesto case cuando es (NULL) pero me regresa el mismo valor
Responder Con Cita
  #5  
Antiguo 11-06-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola odrack, prueba con IFNULL.

Código SQL [-]
......................................
IFNULL(ctasporcbr.importe, "0.00") as PagoForaneo,  
IFNULL(ctasporcbr.tipopago, "Sin Cargo") as FormaPago
......................................

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
usando LEFT JOIN o RIGHT JOIN alcides SQL 8 03-05-2007 17:35:46
left join e inner join duda Patricio SQL 0 26-04-2007 22:06:43
LEFT INNER JOIN & RIGHT INNER JOIN Cabanyaler MS SQL Server 11 07-11-2005 18:09:58
LEFT OUTER JOIN e INNER JOIN Juntos alcides SQL 3 08-07-2005 18:06:27
join el_enigma1 Conexión con bases de datos 3 15-05-2004 08:08:52


La franja horaria es GMT +2. Ahora son las 23:48:16.


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