Ir para conteúdo

Arquivado

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

targa

[Resolvido] Ordem no FROM

Recommended Posts

Boa tarde! pessoal tive um problema em um select que até então não tinha visto.

estou usando o Banco postgres e ao lista varias tabela na clausula FROM ele só funcionava em uma determinada ordem. alguem saberia m porque isso ocorre??

SELECT
               m.id_mat,
               m.titulo_mat,
               m.codigo_mat,
               r.unidademat, r.qtdesolic, r.qtderecebida,
               case
                   when e.contagem = 'U' then 'U'
                   else 'E'
               end as embalagem,
               r.qtdesolic_und, r.qtderecebida_und,
               m.idbec, e.desemb, f.dfamilia,
               case when m.tipo_origem_mat='I' then 'Interno'
                    when m.tipo_origem_mat='E' then 'Externo'
                    else 'NA'
               end as "Origem", 
               m.descricao_mat as "Descrição",
               marca.dmarca as "Marca",
               m.observacao as "Observação",
               lf.nome_for as "Ultimo Fornecedor",
               lf.telefone_for as "Telefone Fornecedor",
               case
                      when e.contagem='U' then mm.valor_unitario
                      else mm.valor_emb
        end as "Preço Última Compra",
        lf.id_mat,
        mm.id_movmat

           FROM

                rcal28 r, rcal23 f, rcal22 marca, material m -- funciona
                -- rcal28 r, rcal23 f, material m,  rcal22 marca -- não funciona

LEFT JOIN
           movimento_mat mm
           ON
        m.id_mat=mm.id_mat and
        mm.id_movmat = (select max(n.id_movmat) from movimento_mat n where n.id_mat=m.id_mat and n.tipo_movmat = 2)
           LEFT JOIN
               rcal26 e
           ON
               e.codemb=m.codemb
    LEFT JOIN
	(select f.nome_for, f.telefone_for, move.id_mat, move.id_movmat from fornecedor f,
                move_mat move where move.codigo_for = f.codigo_for) lf
    ON
	lf.id_mat = m.id_mat and lf.id_movmat = mm.id_movmat
           WHERE
               f.idfamilia = m.idfamilia and
               r.n_req_comp = 123456 and r.id_mat=m.id_mat
               and marca.idmarca = m.idmarca
           ORDER BY m.titulo_mat

 

obrigado!

 

achei o problema é que o left feito esta sendo utilizado na tabela materiais e não por todas as tabelas listadas!

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.