Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Visualizar registros de dos tablas (https://www.clubdelphi.com/foros/showthread.php?t=52723)

GustavoCruz 29-01-2008 16:20:31

Visualizar registros de dos tablas
 
Hola a todos... Realmente la cuestión es la siguiente, tengo una tabla que almacena datos de una factura (de agua potable) y tengo otra que almacena información referente a los pagos que se reciben de una determinada factura...

En un determinado momento un cliente me puede solicitar el historial de sus pagos. así que el sistema debe arrojar los números de la factura y sus respectivos pagos. La consulta sería esta:
Código SQL [-]
select * from facturas, pagosfacturas where numerofactura=numeropago and codigousuario=:usuario ...

si el usuario nunca tuvo un atraso la consulta me mostrará todas las facturas y sus pagos, pero si tuvo un atraso, cómo muestro la descripción de la factura atrasada?. espero me hayan entendido

Muchas gracias por sus aportes...

Ivanzinho 29-01-2008 16:35:42

En caso de tener un atraso la factura no tendrá pago correspondiente por lo que debes hacer un left join

Código SQL [-]
select * 
from facturas F left join pagos P facturas on F.numerofactura=P.numeropago
where codigousuario=:usuario ...

Un saúdo

Ferrari 29-01-2008 16:44:16

Hola así a grandes razgos como pintas tu situacion es cuestion de que en tu query sigas con las sentencias de filtro.
Ej de tu mismo codigo:
Código SQL [-]
select * from facturas, pagosfacturas where numerofactura=numeropago and codigousuario=:usuario 
CASE 
  WHEN Fecha_Pago > Fecha_LimitePago THEN 'Retraso' 
  ELSE 'Normal'
END,
Algo asi te ayudariaSaludos

Ivanzinho 29-01-2008 17:05:22

Cita:

Empezado por Ferrari (Mensaje 261851)
Hola así a grandes razgos como pintas tu situacion es cuestion de que en tu query sigas con las sentencias de filtro.
Ej de tu mismo codigo
Código SQL [-]
select * from facturas, pagosfacturas where numerofactura=numeropago and codigousuario=:usuario 
CASE 
  WHEN Fecha_Pago > Fecha_LimitePago THEN 'Retraso' 
  ELSE 'Normal' END,

Algo asi te ayudariaSaludos


Tienes razón Ferrari, había entendido mal la pregunta, pero viendo tu respuesta voto por ella :p.

Un saúdo.

GustavoCruz 29-01-2008 18:45:04

Hola amigos, gracias por sus aportes

A ver, es algo como esto...

se han expedido 20 facturas para un determinado usuario el el caso de que no se haya atrasado la consulta reflejará registro de la siguiente manera:
FacturaNo. fechapago
1 31/01/2008
2 28/02/2008
3 30/03/2008
. .
. .
. .
20 ...

serían 20 registros.

Esos mismos 20 registros se necesitan visualizar, no importando que no exista un registro relacionado en la tabla de "pago", en este caso

FacturaNo. fechapago
1 31/01/2008
2 (aquí no hay pago)
3 30/03/2008
. .
. .
19 (aquí no hay pago)
20 ...

bueno creo que me he explicado mejor :)

Ivanzinho 29-01-2008 20:05:58

Entonces es lo que entendí al principio :). Debes usar la consulta que te indiqué anteriormente.

Un saúdo


La franja horaria es GMT +2. Ahora son las 06:22:11.

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