Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

felipejose

Select de duas tabelas

Recommended Posts

Olá pessoal.

 

Estou com uma dúvida cruel... rs...

 

É o seguinte:

 

Preciso gerar um relatório onde possuo as seguinte estrutura de tabelas e campos:

 

CLIENTE

Codigo

Nome

 

ITEM

Codigo

Descricao

 

ITEMCLI

Codigo

CodCli

CodItem

 

Preciso de um relatório basicamente "simples" que resulte em:

 

CÓDIGO ITEM - DESCRIÇÃO ITEM - CLIENTE

 

Até então parecia simples, porém, a tabela ITEMCLI que é onde está vinculado item ao cliente e vice-versa está com muitos registros duplicados. Não que esteja errado, neste caso, eles estão corretos. Exemplo. O Item A pertence ao cliente 1, mas também ao Cliente 2 e ao Cliente 3.

No meu select ele está trazendo no resultado corretamente, porém, aparece por diversas vezes o mesmo item, visto que ele está vinculado em diversos clientes. eu gostaria que aparecesse apenas um registro do item, apresentando apenas um dos clientes, como se fosse o primeiro que ele encontrasse.

 

Alguém tem alguma idéia?

Segue abaixo select que eu estou executando:

 

select item.codigo "CODIGO ITEM",
       item.descricao "ITEM",
       cliente.nome "CLIENTE" 
from item,
     cliente,
     itemcli
where itemcli.codcli = cliente.codigo
  and itemcli.coditem = item.codigo
order by 1
Se alguém tiver alguma idéia e puder me ajudar... confesso que jah tentei de tudo, e estou na forca, pois tenho até amanhã meio dia para entregar este relatório... :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, Motta.

 

Obrigado pelo retorno. Desculpe minha ignorância, mas usando o MAX está trazendo ZERO registros. Acredito que estou fazendo algo errado.

 

Vou detalhar melhor o que reciso:

 

Quando efetuo o select abaixo:

 

 

select estitem.codigo ,

          estitem.descricao "ITEM",
          cadcorr.fantasia
from estitem,
        estitemcorr,
        cadcorr
where estitemcorr.item = estitem.codigo
   and estitemcorr.correntista = cadcorr.codigo
   and estitem.tipo_item = 1
group by estitem.codigo, estitem.descricao, cadcorr.fantasia

 

 

O resultado é semelhante ao seguinte:

 


CODIGO         ITEM           FANTASIA
     1              ITEM 1     CLIENTE 1
    1              ITEM 1       CLIENTE 2

 

 

Ou seja, está trazendo o mesmo item para ambos os clientes.

E eu gostaria que trouxesse apenas uma unica vez, independente do cliente que fosse apresentado.

 

No aguardo. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
select estitem.codigo ,

          estitem.descricao "ITEM",
          cadcorr.fantasia
from estitem,
        estitemcorr,
        cadcorr
where estitemcorr.item = estitem.codigo
   and estitemcorr.correntista = cadcorr.codigo
   AND ESTITEM.TIPO_ITEM = 1
   AND ESTITEMCORR.CORRENTIST = (SELECT MAX(ESTITEMCORR2.CORRENTIST)
                                 FROM ESTITEMCORR ESTITEMCORR2
                                 where estitemcorr2.item = estitemcorr.item)
group by estitem.codigo, estitem.descricao, cadcorr.fantasia

tente isto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu querido Motta.

 

Muitissimo Obrigado.

 

Realmente funcionou e era isto que precisava.

 

Agora me liguei que eu posso também fazer o MAX com o código do CLIENTE.

 

Olha só:

select unique tab1.codigo "CÓDIGO ITEM", tab1.descricao "DESCRIÇÃO ITEM", tab2.nome "CLIENTE"
from estitem tab1, cadcorr tab2
where tab2.codigo = (select max(correntista)
from estitemcorr tab3
where tab3.item = tab1.codigo
and tab1.tipo_item = 1)
order by 1

 

 

Valew pela força.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.