[firebase-br] RES: Problemas Com "LEFT OUTER JOIN"

Elton da Motta Barbosa embarbosa em gmail.com
Sex Jul 3 14:46:14 -03 2009


fala Mateus,

> Os índices são:
...
> Na Tabela Notas_Pedidos no campo NOTA e no campo PEDIDO tem (PK)
..

olha só, pelo que entendi os campos NOTA e PEDIDO tem PK, mas não tem FK.
e vc está relacionando essas tabelas por apenas um dos campos.
O que significa que não há índice pra esse relacionamento.
Então crie os FK na Tabela e teste (mande o plan).


mas qnto a seleção dos dados, aff rapaz... ficou um pouco complicado
mesmo de entender...
mas pelo visto vc quer são todas as notas de um cliente e seus pedidos
relacionados certo?
se for assim não seria melhor vc fazer a seleção das notas e daí fazer
os joins para achar o pedido?

De qualquer modo seu SQL Original poderia ser modificado ainda e ficaria assim:

select
p.cod,p.data,p.total, case p.status
when 0 then 'ABERTO'
when 1 then 'ENTREGUE'
when 2 then 'ENTREGUE E RECEBIDO'
when 3 then 'RECEBIDO'
when 4 then 'ENCERRADO'
end as status,
n.nf,
n.emissao
from notas n
left outer join notas_pedidos np on (p.cod = np.pedido)
inner join pedido p on (n.id = np.nota)
where
p.codcliente = 2
order by p.data desc, p.cod

Caso vc queira é todas as notas e todos os pedidos de um cliente,
então sua sql poderia continuar do jeito q vc escreveu...

só mais uma coisa... vc atualizou as estatísticas dos índices? se não
funcionar atualiza e faz um teste ok?
acho que é isso... se quiser pode mandar o seu BD pra mim olhar...
até+




Mais detalhes sobre a lista de discussão lista