Tenho um select com dois left join trazendo a soma de duas tabelas.
fiz uma consulta que inicia no filtro, filtrando a data do select principal, mas preciso que o filtro seja aplicado dentro do left join.
como faço isso?
Tenho um select com dois left join trazendo a soma de duas tabelas.
fiz uma consulta que inicia no filtro, filtrando a data do select principal, mas preciso que o filtro seja aplicado dentro do left join.
como faço isso?
Crie uma view em cima de toda instrução select e crie a aplicação grid usando essa view
exemplo da minha sql
select codigo, nome, data_at from atendimento
left outer join
(
select codigo,data_v, sum(vendas) from vendas where periodo between ‘filtro pelo SC’ and ‘filtro pelo SC’ group by codigo,data_v
) vendas on atendimento.codigo = vendas.codigo
left outer join
where data_at between ‘filtro pelo SC’ and ‘filtro pelo SC’
preciso filtrar dois campos de datas difetentes, correto? mas o usuario digitasse apenas um periodo de data
Remove o subselect do From Left oiter Join e faz a junção de vendas direto com atendimento e jogue o sim(vendas) e demais campos no select e adicione os group by no final.
Inclusive vai melhorar a performance da instrução.
Se for resistente a sugestão, crie campos virtuais no filtro, no evento onscriptinit mova o valor dos Campos para globais SC e as utilize no SQL principal da coluna.
Outra sugestão é criar uma tabela com dados temporários, e usar essa tabela na grid.
A alimentação de dados nessa tabela deve se dar através de campos virtuais no filtro aplicados no select acima e o resultado alimentar a tabela sugerida.
não entendi bem, poderia me explicar melhor?
Foram 3 sugestões, não entendeu as 3?
Realmente não entendi, nada…
Sugestão 1:
SELECT a.codigo as Codigo, a.nome as Nome, a.data_at as Data_Atendimento, v.data_v as Data_Venda, SUM(v.vendas) as Total_Vendas
FROM atendimento a
LEFT OUTER JOIN vendas v ON a.codigo = v.codigo
GROUP BY a.codigo,v.data_v
Crie filtros para Data_Atendimento (entre 2 valores) e Data_Venda (entre dois Valores) e Especiais a gosto mas de forma coerente.
Pergunta: Porque LEFT OUTER JOIN?
Criar dois filtros sendo que sempre irei pesquisar a mesma data, entendeu, fica incoerente,
exemplo: data atendimento //_ e //__
data da venda //_ e //__
o usuario tera sempre que digitar os mesmos valores, o que queria e o seguinte
periodo: //_ e //__ -> que o conteudo seja armazenado em variavel e eu referencie elas no select.
no select que montou acima não funciona pois preciso de varias validações na tabela de vendas tenho que fazer o calculo quando e devolução e tal, por isso o left outer join, pois alem de poder usar o select que preciso, entram todos os atendimentos que não tenham venda.
Você não apresentou o a instrução completa?
Não, isso eu digitei somente como conceito!
O fórum está instável…
Sempre é bom detalhar pois estudamos a questão para dar a sugestão.
Ainda acho que funciona sem subselect no From.
Mas só com uma base real e a regra de negócio a ser cumprida para realizar testes e ofertar uma solução plausível.