[Resolvido] Ordem no FROM
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!
Discussão (0)
Carregando comentários...