FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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 DM.IBDataSet.Locate('NOMBRE', ComboBox.Text, []); DM.IBQuery.SQL.Clear; DM.IBQuery.SQL.Add('select distinct * from FACTURAS, DETALLES, PRESTA where FACTURAS.ID_FACTURA=DETALLES.FACTURA and DETALLES.PRESTA=PRESTA.ID_PRESTA and PRESTA.PERSONAL=:per and ANULADA = ''0'' '); DM.IBQuery.ParamByName('per').AsInteger:= DM.IBDataSetID_PERSONAL.Value; DM.IBQuery.Open; end; |
#2
|
||||
|
||||
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'' '); DM.IBQuery.ParamByName('per').AsInteger:= DM.IBDataSetID_PERSONAL.Value;
__________________
Todos llevamos nuestros demonios a cuestas.. |
#3
|
||||
|
||||
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! |
#4
|
||||
|
||||
lo que puedes hacer es listar los campos que ocupas y utilizar la opcion group by para que la agruper por factura
__________________
Todos llevamos nuestros demonios a cuestas.. |
#5
|
|||
|
|||
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. |
#6
|
||||
|
||||
Problema solucionado! Gracias amigos por la ayuda que me han dado. Abelg lo resolví como me dijiste.
Saludos! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cuantos registros devuelve una consulta | kizé | MySQL | 1 | 25-10-2010 10:13:30 |
devuelve registros borrados en consulta a dbase | janlo | SQL | 8 | 15-02-2008 17:55:34 |
Realizar una consulta sobre los registros que devuelve otra consulta | Borjaserrano | Firebird e Interbase | 12 | 01-10-2007 23:19:44 |
Consulta para ver registros duplicados | MarcoMae | SQL | 2 | 30-03-2005 18:40:43 |
Limitar los registros que devuelve una consulta | roman | Conexión con bases de datos | 1 | 03-09-2004 09:08:45 |
|