Estou num dilema a dias com o seguinte senário: Com Lazarus 1.6 com ZQuery e SQLite 3.31.1
Tenho uma tabela detalhes ,de poucos registros (100)
que com o seguinte select eu tento fazer um cálculo que é baseado em uma soma de uma coluna de um lote de registros (uso GROUPBY).
Uso uma Query master e uma Query detalhes que estao ligadas por Master / detalhes id X idNC. Puxei um total, campos de data e numero de
Nota da tabela master pelo metodo LEFT OUTER JOIN que me traz certinho e ainda traz valores que somo no SQL.
Antes tinha feito uma miscelânea que alguns calculos foi direto no SELECT outros usei por metodo CalcField na tabela detalhe.
Como modulo somente para digitação está perfeito , monta toda a massa de dados que preciso, mas agora nescessito de
trabalhar com datas nesta base e o agravante é que existe uma dependência nesta forma que me obriga a ter a tabela master
ligada, porque ela que dá alguns valores totalizados (tot_custos) e liga a chave primaria quando na seleção .
Estou tentando agora eliminar a relação da tabela master para que o SELECT na detalhes faça tudo com autonomia.
SELECT A.id,
A.idNC,
B.data, AS data_FK,
B.num_NC AS num_nota_FK,
nome_do_item,
qde,preco_un,
tot_item,
IFNULL(B.val1,0) + IFNULL(B.val2,0) + IFNULL(B.val3,0) AS tot_custos ,
IFNULL((qde * preco_un),0) AS tot_item,
IFNULL((SUM(tot_item)),0) AS tot_colunaItem,
(((IFNULL(tot_custos,0) / IFNULL(tot_colunaItem,0)) * 100) * (tot_item / 100)) AS custo_item
FROM tboperacoes AS A
LEFT OUTER JOIN tbnotacorret AS B ON (B.id = A.idNC)
GROUP BY A.idNC
Obs. Usei IFNULL para precaver erro de entrada ainda nula ou divisao por zero.
Onde id : Chave primaria Identificadora da tabela master que seve de cabeçalho e numeração e data da nota.
idNC : Referencial na tabela detalhes.
Alias A : Refere-se a tabela detalhes.
Alias B : Refere-se a tabela master.
A expressão do calculo já esta ok tambem, mas não apresenta todos os registros, só o primeiro de cada nota. Eu queria de todos.
O PROBLEMA: quando retiro a ligação master/detale ela não varre todos os registros apresentando somente o primeiro de cada nota.
No grid da tabela master rodo este select que esta em procedure Calculquery para cada registro selecionado na query master via um grid de edição.
para poder prosseguir em pesquisas nestes resultados já conseguidos.
já tentei com ROOLUP mas SQLite não tem isso só emulado assim mesmo não sei se é isso que faria efeito.
Preciso eliminar o método master/detalhes das querys que coloquei via propriedades master fild/master source etc.. e utilizar tudo via SQL.
Agradeço muito a quem se envolver neste help, que poderia até servir de estudo de caso para os demais.
Pergunta
Lazaruz
Olá !
alguém por gentileza poderia me dar um help :
Estou num dilema a dias com o seguinte senário: Com Lazarus 1.6 com ZQuery e SQLite 3.31.1
Tenho uma tabela detalhes ,de poucos registros (100)
que com o seguinte select eu tento fazer um cálculo que é baseado em uma soma de uma coluna de um lote de registros (uso GROUPBY).
Uso uma Query master e uma Query detalhes que estao ligadas por Master / detalhes id X idNC. Puxei um total, campos de data e numero de
Nota da tabela master pelo metodo LEFT OUTER JOIN que me traz certinho e ainda traz valores que somo no SQL.
Antes tinha feito uma miscelânea que alguns calculos foi direto no SELECT outros usei por metodo CalcField na tabela detalhe.
Como modulo somente para digitação está perfeito , monta toda a massa de dados que preciso, mas agora nescessito de
trabalhar com datas nesta base e o agravante é que existe uma dependência nesta forma que me obriga a ter a tabela master
ligada, porque ela que dá alguns valores totalizados (tot_custos) e liga a chave primaria quando na seleção .
Estou tentando agora eliminar a relação da tabela master para que o SELECT na detalhes faça tudo com autonomia.
SELECT A.id,
A.idNC,
B.data, AS data_FK,
B.num_NC AS num_nota_FK,
nome_do_item,
qde,preco_un,
tot_item,
IFNULL(B.val1,0) + IFNULL(B.val2,0) + IFNULL(B.val3,0) AS tot_custos ,
IFNULL((qde * preco_un),0) AS tot_item,
IFNULL((SUM(tot_item)),0) AS tot_colunaItem,
(((IFNULL(tot_custos,0) / IFNULL(tot_colunaItem,0)) * 100) * (tot_item / 100)) AS custo_item
FROM tboperacoes AS A
LEFT OUTER JOIN tbnotacorret AS B ON (B.id = A.idNC)
GROUP BY A.idNC
Obs. Usei IFNULL para precaver erro de entrada ainda nula ou divisao por zero.
Onde id : Chave primaria Identificadora da tabela master que seve de cabeçalho e numeração e data da nota.
idNC : Referencial na tabela detalhes.
Alias A : Refere-se a tabela detalhes.
Alias B : Refere-se a tabela master.
A expressão do calculo já esta ok tambem, mas não apresenta todos os registros, só o primeiro de cada nota. Eu queria de todos.
O PROBLEMA: quando retiro a ligação master/detale ela não varre todos os registros apresentando somente o primeiro de cada nota.
No grid da tabela master rodo este select que esta em procedure Calculquery para cada registro selecionado na query master via um grid de edição.
para poder prosseguir em pesquisas nestes resultados já conseguidos.
já tentei com ROOLUP mas SQLite não tem isso só emulado assim mesmo não sei se é isso que faria efeito.
Preciso eliminar o método master/detalhes das querys que coloquei via propriedades master fild/master source etc.. e utilizar tudo via SQL.
Agradeço muito a quem se envolver neste help, que poderia até servir de estudo de caso para os demais.
Link para o comentário
Compartilhar em outros sites
25 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.