Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-10-2004
saruman91 saruman91 is offline
Registrado
 
Registrado: oct 2004
Ubicación: Valencia
Posts: 3
Poder: 0
saruman91 Va por buen camino
Question Duplicidad de lineas en un grid con select contra firebird

Buenos dias, tengo un problema a la hora de visualizar el resultado de una consulta contra firebird en una rejilla. El problema consiste en que algunos registros aparecen duplicados, supongo que sera un problema de la consulta SQL ejecutada, pero de momento me he ofuscado con que la consulta esta mal. Pero si alguien puede repasarla para ver si esta bien o mal, lo agradeceria enormemente. Utilizo para la consulta un componente TIBQuery al cual enlaza un TIBTransaction un TDataSource que descarga el resultado de la sentencia contra el Grid. La consulta es la siguiente:



Intervienen en la consulta un total de 9 tablas que son BOOKING, PUERTOS_SIC, DESTINOS_SIC, EXPEDIENTES, CUENTAS, DEPOSITOS, MERCANCIAS_GRAL, MERCANCIAS_TARIC, MMP2



select

B.BOOKING,

B.SCHEDULE,

D1.DESTINO AS ORIGEN_INICIAL,

P1.NOMPTO AS PUERTO_ORIGEN,

P2.NOMPTO AS PUERTO_DESTINO,

D2.DESTINO AS DESTINO_FINAL,

B.EXPEDIENTE,

E.FAPERTURA,

E.CONTENEDOR,

E.PRECINTO,

E.PRECINTOLIN,

B.NUMBL,

B.CLIENTE,

C.NOMBRE AS NOMBRE_CLIENTE,

B.CLIENTEPERSONA,

B.DESTINO,

B.DOCUMENTACION,

B.ORIGEN,

B.COORDEN,

B.BULTOS,

B.EMBALAJEN,

T1.TIPO_ENVASE AS EMBALAJE,

B.PESO,

B.VOLUMEN,

B.MERCANCIA,

M1.MERCANCIA AS MERCANCIA_GRAL,

B.MERCANCIATARIC,

M2.NOMMER AS MERCANCIA_TARIC,

B.MERCLIBRE,

B.MMPP,

M3.DENCOM AS MERCANCIA_PELIGROSA,

B.DEPOSITO,

D3.DEPOSITO AS NOMBRE_DEPOSITO,

B.REFDEPOSITO,

B.IDALBARAN,

B.MARCAS,

B.OBSERVACIONES,

B.FRESERVA,

B.FENTRADA,

B.ESTRANSBORDO,

B.RECEPTOR,

B.EMBARCADOR

from

BOOKING B

left outer join SCHEDULE_SIC S on (S.SCHEDULE=B.SCHEDULE)

left outer join PUERTOS_SIC P1 on (P1.CODIGO=S.PORIGEN)

left outer join PUERTOS_SIC P2 on (P2.CODIGO=S.PDESTINO)

left outer join EXPEDIENTES E on (E.EXPEDIENTE=B.EXPEDIENTE)

left outer join CUENTAS C on (C.CODIGO=B.CLIENTE)

left outer join DESTINOS_SIC D1 on (D1.CODIGO=B.ORIGEN)

left outer join DESTINOS_SIC D2 on (D2.CODIGO=B.DESTINO)

left outer join TIPO_ENVASES T1 on (T1.CODIGO=B.EMBALAJEN)

left outer join MERCANCIAS_GRAL M1 on (M1.CODIGO=B.MERCANCIA)

left outer join MERCANCIAS_TARIC2 M2 on (M2.CODIGO=B.MERCANCIA)

left outer join MMPP2 M3 on (M3.CODIGO=B.MMPP)

left outer join DEPOSITOS D3 on (D3.CODIGO=B.DEPOSITO)

where

(B.FENTRADA is NULL)

order by

B.BOOKING, P2.NOMPTO, P1.NOMPTO;

Responder Con Cita
  #2  
Antiguo 28-10-2004
Avatar de kalimero
kalimero kalimero is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 288
Poder: 21
kalimero Va por buen camino
Hola

Comprueba Que Los Campos De Enlace Entre Tablas Esta Bien.
Y ¿vaya Tela De Consulta? ¿has Pensado En Cuato Tardara En Ejecutarse? A Poco Que Sean Tablaqs Grandes, Eso Va Atardar Una Eternidad

Saludos
Responder Con Cita
  #3  
Antiguo 28-10-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por saruman91
Intervienen en la consulta un total de 9 tablas que son BOOKING, PUERTOS_SIC, DESTINOS_SIC, EXPEDIENTES, CUENTAS, DEPOSITOS, MERCANCIAS_GRAL, MERCANCIAS_TARIC, MMP2....
Una pregunta OFF-TOPIC, por curiosidad, ¿Qué significa _SIC que aparece al final de algunas tablas (PUERTOS_SIC, DESTINOS_SIC, ...)?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 28-10-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Añade un campo de la tabla S a la consula, ya que es la única tabla de la que no has añadido ningun campo (eso me ha parecido ver) y comprueba si luego siguen saliendo duplicados; Tal vez el campo de esa tabla sea el diferencial.

Usando LEFT JOIN (como usas tú) y si están bien construídos es raro que se generen duplicados, en todo caso debería haber registros de menos...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 28-10-2004 a las 16:43:28.
Responder Con Cita
  #5  
Antiguo 28-10-2004
saruman91 saruman91 is offline
Registrado
 
Registrado: oct 2004
Ubicación: Valencia
Posts: 3
Poder: 0
saruman91 Va por buen camino
Este termino de SIC se refiere al Sistema de Informacion Comunitario. Yo trabajo para una empresa relacionada con el trafico de mercancias maritimas en el Puerto de Valencia, y este sistema lo ha implementado el Puerto de Valencia para que mediante mensajes XML todos los usuarios del puerto puedan enviar documentaciones e incorporarlas automaticamente a sus sistemas, y avisando a todas las personas implicadas en la operacion de que esta sucediendo en todo momento con las mercancias. Si necesitas mas informacion al respecto dimelo y te informare. De momento si estas interesado puedes ver el siguiente enlace:

http://www.ipec.es/investigaciones/T.I.C/sic.htm
Responder Con Cita
  #6  
Antiguo 29-10-2004
saruman91 saruman91 is offline
Registrado
 
Registrado: oct 2004
Ubicación: Valencia
Posts: 3
Poder: 0
saruman91 Va por buen camino
Angry Sobre la consulta

Cita:
Empezado por Neftali
Añade un campo de la tabla S a la consula, ya que es la única tabla de la que no has añadido ningun campo (eso me ha parecido ver) y comprueba si luego siguen saliendo duplicados; Tal vez el campo de esa tabla sea el diferencial.

Usando LEFT JOIN (como usas tú) y si están bien construídos es raro que se generen duplicados, en todo caso debería haber registros de menos...
Siento decirte que he revisado la consulta, he procedido introduciendo un campo de la tabla Schedule, y sigue haciendo lo mismo. Tener en cuenta que de los registros que aparecen en el grid, unos aparecen duplicados y otros no.
Responder Con Cita
  #7  
Antiguo 29-10-2004
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 21
StartKill Va por buen camino
Thumbs up

Holas,

Algo parecido em paso ;-)

El error que encontre en mi consulta fue: que las "tablas secundarias" con las que hacia un JOIN habia registros duplicados... es decir, por ejemplo que en una de tus tablas "ejemplo-TIPO_ENVASES" existen dos o mas registros con el mismo codigo... a lo mejor no le has puesto el primary key a alguna de tus tablas secundarias, o no estas condicionando bien tus join en el ON.

Your friend,

SarttKill
Lima-Perú

Nota: Comentanos si de alguna manera llegas a solucionar tu problema.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 20:22:15.


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