Consulta SQL devuelve registros duplicados
Hola a todos! He buscado en el foro y no doy con la solución a mi problema, la situación es la siguiente: estoy con un programa de facturación, usando Delphi 7 e InterBase 6.5, y a la hora de consultar sobre las facturas realizadas obtengo que en algunos casos se muestra un mismo registro más de una vez (duplicado), claro que dicho registro existe sólo una vez en la tabla. Luego intenté usando la clausula distinct pero el resultado es el mismo. Agradezco a quien pueda ayudarme.
Código:
begin |
se debe repetir porque lo comparas con el detalle de tu factura
from FACTURAS, DETALLES, PRESTA y si una factura tiene 5 productos, pues te va a aparecer 5 veces el numero de factura lo que sucede es que es en la tabla detalle donde tu compruebas sobre el parametro per, en lugar de hacerlo unicamente sobre la tabla factura Código:
DM.IBQuery.SQL.Add('select distinct * from FACTURAS, PRESTA where FACTURAS.PRESTA=PRESTA.ID_PRESTA and PRESTA.PERSONAL=:per and ANULADA = ''0'' '); |
Hola gmontes! gracias por responder y aportar ideas. No había detectado que repite el registro tantas veces como detalles contiene la factura pero, no puedo hacer la corrección que me recomiendas, ya que PRESTA es clave foránea en la tabla DETALLES y no en la tabla FACTURAS. (PRESTA hace referencia a las prestaciones de los miembro del personal).
En mi ejemplo quiero mostrar las facturas realizadas a determinado miembro de personal. Ahora bien, no podría llevar mi foránea a la tabla FACTURAS porque en este caso, que pasaría si en una misma factura existen dos prestaciones distintas de dos miembros de personal diferentes? Espero ser clara con lo que necesito. Saludos! |
lo que puedes hacer es listar los campos que ocupas y utilizar la opcion group by para que la agruper por factura
|
Si lo que quieres es mostrar las facturas solamente entonces esto te quedará espero bien:
Saludos. solo modifique la consulta un poco tu la pones en tu componente como quieras por código o directo en su propiedad SQL. |
Problema solucionado! Gracias amigos por la ayuda que me han dado. Abelg lo resolví como me dijiste.
Saludos! |
La franja horaria es GMT +2. Ahora son las 06:22:18. |
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