Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Registros repetidos Firebird (https://www.clubdelphi.com/foros/showthread.php?t=82802)

Jose Roman 15-04-2013 20:10:00

Registros repetidos Firebird
 
Hola a todos

Tengo una consulta en SQL:
Código SQL [-]
SELECT NOTA,FACT,p.VR,p.SA,VALO,FECH,OBSE
FROM NOTAS
LEFT JOIN PROC_FCPDTES((SELECT CLIEN FROM FACTU WHERE ID_FC = FACT),'','') p ON 1=1
WHERE NOTA LIKE 'ND%'
Esta consulta me da los siguientes registros:
ND0000001__FC0000009__2640000__2476000__1000__08.04.2013
ND0000001__FC0000009__1601000___111000__1000__08.04.2013
ND0000002__FC0000008__2640000__2476000__2000__08.04.2013
ND0000002__FC0000008__1601000___111000__2000__08.04.2013


En la tabla NOTAS solo hay dos registros:
ND0000001__FC0000009__1000__08.04.2013
ND0000002__FC0000008__2000__08.04.2013

el PROC_FCPDTES tambien posee dos registros:
FC0000007__19.03.2013__2640000__2476000
FC0000009__19.03.2013__1601000___111000


No se como evitar que se dupliquen los registros, ya he incluido DISTINCT en FACT pero me arroja este error:
SQL error code = -104
Token unknow

Gracias de antemano por su ayuda.

oscarac 15-04-2013 20:21:50

me parece que los datos que has puesto en el ejemplo no corresponden a la consulta
porque yo veo que todos los registros son diferentes
si puedieras explicar con un poco mas de detalles que es lo que necesitas quiza alguien pueda darte una mano

Jose Roman 15-04-2013 22:10:55

Gracias por responder, si son los datos lo que pasa es que muestro los registros que hay en cada tabla, pero quizas no me explique bien.
Entonces:
- Los campos de la tabla NOTAS son NOTA,FACT,VALO,FECH,OBSE
- Los campos del procedimiento PROC_FCPDTES son VR,SA
- El campo fecha en el procedimiento PROC_FCPDTES no lo tengo en cuenta para la consulta

oscarac 15-04-2013 22:25:52

como se relacionan esas 2 tablas?
cual es el campo en comun?

Jose Roman 15-04-2013 22:28:47

en NOTAS se llama FACT y en PROC_FCPDTES se llama FA

oscarac 15-04-2013 22:30:44

A ver intenta de esta forma
Código SQL [-]
SELECT NOTA,FACT,p.VR,p.SA,VALO,FECH,OBSEFROM NOTAS nLEFT JOIN PROC_FCPDTES p on N.FACT = P.FA WHERE NOTA LIKE 'ND%'

Jose Roman 15-04-2013 22:40:48

se me olvido comentar otra cosa:
el PROC_FCPDTES(1,2,3) tiene 3 parametros de entrada, el parametro 2 y 3 los dejo vacio y el 1 solicita es el codigo del cliente CLIEN que lo saco de una tabla de facturas SELECT CLIEN FROM FACTU WHERE ID_FC = FACT > este campo esta en notas

oscarac 15-04-2013 23:00:56

ya me confundiste mas

ese PROC_FCPDTES es un procedimiento? es una tabla? que es?

Jose Roman 15-04-2013 23:17:22

es un procedimiento, pero ya arregle el problema, me diste la idea y fue reemplazar
LEFT JOIN PROC_FCPDTES((SELECT CLIEN FROM FACTU WHERE ID_FC = FACT),'','') p ON 1=1
por esto
LEFT JOIN PROC_FCPDTES((SELECT CLIEN FROM FACTU WHERE ID_FC = FACT),'','') p ON FACT=FA
ahi ya no repite registros, gracias por tu ayuda me sirvio para guiarme

oscarac 15-04-2013 23:20:37

ok me da gusto saber q fui de ayuda,
pero para la prox... trata de dar un mejor mensaje a la primera
con todos los datos, cosa que tendremos una mejor idea que problema

saludos


La franja horaria es GMT +2. Ahora son las 23:53:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi