I'm breaking my head a few days ago with SQL on something that should be pretty simple, but I can not figure it out.
I want to get all the data in the [NumOrdem] table including those that are not in the [ItemNotes] table with the following SQL code:
SELECT OrdensProducao.NumOrdem AS 'OP'
,OrdensProducao.NomeCliente AS 'Cliente'
,OrdensProducao.Descricao AS 'Descrição'
,OrdensProducao.TipoProduto AS 'Produto'
,NomeAgencia AS 'Agência'
,OrdensProducao.DtEmissao
,SPreco AS 'Valor Fechado'
,SCustosComissoes AS 'Comissão'
,(SPreco - SCustosComissoes - SCustosMat - SCustosTerc - SCustosImpostos - SCustosFin - SCustosVenOutros) AS 'Contr Marginal'
,(SPreco - SCustosComissoes - SCustosMat - SCustosTerc - SCustosImpostos - SCustosFin - SCustosVenOutros - SCustosMO) AS 'Lucro'
,SUM(ItemNota.ValorTotal) AS 'Faturado'
FROM
((OrdensProducao INNER JOIN OrcHdr ON OrdensProducao.NumOrdem = OrcHdr.NumOrcamento)
LEFT OUTER JOIN ItemNota ON OrcHdr.NumOrcamento = ItemNota.NumOrdem)
INNER JOIN NotasFiscais ON ItemNota.ObjID_Nota=NotasFiscais.ObjID
WHERE
(NotasFiscais.NaturezaOperacao IS NULL OR (NOT NotasFiscais.NaturezaOperacao LIKE 'doa*' OR NotasFiscais.NaturezaOperacao LIKE 'reme*')) AND
(ItemNota.Devolucao IS NULL OR ItemNota.Devolucao<> 'D') AND
(NotasFiscais.Situacao IS NULL OR NotasFiscais.Situacao = 'N') AND
(ItemNota.Fatura IS NULL OR ItemNota.Fatura = 'F')
GROUP BY
OrdensProducao.NumOrdem
,OrdensProducao.NomeCliente
,OrdensProducao.Descricao
,OrdensProducao.TipoProduto
,NomeAgencia
,OrdensProducao.DtEmissao
,SPreco
,SCustosComissoes
,(SPreco - SCustosComissoes - SCustosMat - SCustosTerc - SCustosImpostos - SCustosFin - SCustosVenOutros)
,(SPreco - SCustosComissoes - SCustosMat - SCustosTerc - SCustosImpostos - SCustosFin - SCustosVenOutros - SCustosMO)
ORDER BY
OrdensProducao.NumOrdem
But I only get the equivalent data from the two tables! If I remove the table [NotesFox], it works perfectly, but I need the 'WHERE' dependent on it. I'm pretty sure it's something about relationships, but I can not figure it out.