problema com query

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Smeagoll
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sex, 01 Abr 2005 2:14 pm
Localização: sp
°v°
/(_)\ Cristiano Carlos - Suporte - TI
^ ^ SOFTWARE LIVRE
"Socialmente justo, economicamente viável e tecnologicamente
sustentável"

Boa tarde Galera!!

Eu tenho a query abaixo e o seguinte problema:
Estou com proble na amarração da query esta retornando linha duplicadas e eu não acho o problema. alguém pode me ajudar ?
A query é essa.

Selecionar tudo

select ri.operation_id         "Nº Rec"
      ,ri.invoice_num          "Nota Fiscal"
      ,ri.creation_date        "Emissão"
      ,ri.series               "Serie"
      ,ril.icms_amount         "Valor do ICMS"
      ,ril.ipi_base_amount     "Valor do IPI"
      ,reo.creation_date       "Dt Rec"
      ,reo.status              "Status Nota"
      ,pv.vendor_name          "Fornecedor"
      ,at.name                 "Condição de Pagto"
      ,pha.segment1            "Numero OC"
      ,msib.segment1           "Cod Item"
      ,msit.description        "Descrição"
      ,rfo.cfo_code            "CFO"
      ,ril.uom                 "UN Medida"
      ,ril.quantity            "Qtde"
      ,ril.unit_price          "Preço UN"
      ,ril.total_amount        "Total Nota"
      ,ril.icms_tax            "Alicota ICMS"
 from  apps.rec_invoices            ri
      ,apps.rec_invoice_lines       ril
      ,apps.rec_entry_operations    reo
      ,apps.po_vendors              pv
      ,apps.ap_terms                at
      ,apps.rec_fiscal_entities_all rfea
      ,apps.po_vendor_sites_all     pvsa
      ,apps.po_headers_all          pha
      ,apps.po_lines_all            pla
      ,apps.po_line_locations_all   plla
      ,apps.mtl_system_items_b      msib
      ,apps.mtl_system_items_tl     msit
      ,apps.rec_fiscal_operations   rfo
where ri.invoice_id         = ril.invoice_id
  and ri.organization_id    = reo.organization_id
  and ri.operation_id       = reo.operation_id
  and ri.entity_id          = rfea.entity_id
  and ri.terms_id           = at.term_id
  and pvsa.vendor_site_id   = rfea.vendor_site_id
  and pvsa.vendor_id        = pv.vendor_id
  and plla.line_location_id = ril.line_location_id
  and plla.po_header_id     = pha.po_header_id
  and pha.po_header_id      = pla.po_header_id
--  and ri.operation_id       = 100000
--  and ri.organization_id    = 56
  and msib.inventory_item_id = ril.item_id
  and msib.organization_id   = ri.organization_id
  and msit.organization_id   = msib.organization_id
  and msit.inventory_item_id = msib.inventory_item_id
  and msit.language          = 'PTB'
  and rfo.cfo_id             = ril.cfo_id
  and ri.creation_date between to_date('01/01/2005','dd/mm/yyyy')
  and                          to_date('10/01/2005','dd/mm/yyyy')
order by ri.operation_id;
:shock:
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

É impossível te dizer onde está o problema, pois nós não sabemos a estrutura das tabelas.

Precisamos saber os relacionamentos existentes em CADA tabela envolvida ( Chave-Primária). O que pode estar acontecendo é o esquecimento de algum JOIN. E isso, não temos como adivinhar... :-(
Smeagoll
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sex, 01 Abr 2005 2:14 pm
Localização: sp
°v°
/(_)\ Cristiano Carlos - Suporte - TI
^ ^ SOFTWARE LIVRE
"Socialmente justo, economicamente viável e tecnologicamente
sustentável"

você tem razão amigo... era um relacionamento furado mesmo
ricardorauber
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 96
Registrado em: Qua, 21 Jun 2006 11:33 pm
Localização: Canoas RS

bah Smeagoll, não sei se tu ainda usa o fórum mas eu estou com exatamente esse problema no EBS!! Só faltou dizer qual é o relacionamento correto que ia ser jóia!
rodfbar
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 241
Registrado em: Ter, 09 Out 2007 11:15 am
Localização: Batatais - SP

você deveria observar qual tabela esta trazendo dados diferentes para cada linha, o que ocasiona este produto...

ou tente colocar um distinct na frente do select...

pra verificar uma possivel falta de relacionamento você pode utilizar o "explan-plain" na query, existe um topico explicando a forma de utiliza-lo...

outra forma de localizar qual tabela esta entrando neste produto é tirando uma a uma a partir do seu ultimo relacionamento(o menos significativo)e deixando apenas as tabelas base da sua consulta (tipo tabelas que você liga apenas para trazer nome de um cliente por exemplo)

da meneira que esta fica realmente dificil a gente te falar o ponto exato que você precisa alterar pois não temos as estruturas e dados das suas tabelas...

abrçs
ricardorauber
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 96
Registrado em: Qua, 21 Jun 2006 11:33 pm
Localização: Canoas RS

rodfbar

Estas são tabelas do Oracle Applications, no meu caso o E-Business Suite. Para as tabelas dos módulos padrão do Applications, a Oracle disponibiliza as informações de relacionamentos no metalink mas para o módulo REC (que é exclusivo para o Brasil), não existe isso.

Para quem não sabe, dentro do Oracle Applications, todas as chaves e constraints não estão no banco (ex: user_constraints) e sim em tabelas de configuração da Oracle (ex: fnd_tables, fnd_primary_keys).

O meu problema é que justamente por não encontrar os relacionamentos corretos dentre as centenas de campos que cada tabela tem, eu não estou conseguindo achar uma relação que seja 1 para 1.
Responder
  • Informação