Ir para conteúdo
Fórum Script Brasil
  • 0

Reduzir SELECT


AlexandrePacheco

Pergunta

Estou iniciando no mundo da programação. Estou fazendo um relatório no Crystal report XI R2 usando o VS 2010 e banco de dados MySQL.

Só que o SQL abaixo esta muito grande para inserir no comando do Crystal Report. Gostaria de saber se tem como fazer uma linha de comando menor dando o mesmo resultado. Também tentei fazer e não consegui foi pegar a soma das tabelas missões, dizimo, votos e receita e subtrair o somatório da tabela despesas. Isso sendo mostrado cada um em uma coluna de acordo com a data inicial, data final e mês. 

 

SELECT tbcongregacao.codcongregacao, tbcongregacao.codigocongregacao, tbcongregacao.nomecongregacao,
(SELECT SUM(tbmissoes.valormissoes) FROM tbcongregacao, tbmissoes WHERE tbcongregacao.codcongregacao LIKE '1' AND tbcongregacao.codcongregacao LIKE tbmissoes.codcongregacao AND tbmissoes.mesmissoes LIKE 'Fevereiro' AND tbmissoes.datamissoes >= '01/02/2016' AND tbmissoes.datamissoes <= '29/02/2016') +
(SELECT SUM(tbdizimo.valordizimo) FROM tbcongregacao, tbdizimo WHERE  tbcongregacao.codcongregacao LIKE '1' AND tbcongregacao.codcongregacao LIKE tbdizimo.codcongregacao AND tbdizimo.mesdizimo LIKE 'Fevereiro' AND tbdizimo.datadizimo >= '01/02/2016' AND tbdizimo.datadizimo <= '29/02/2016') +
(SELECT SUM(tabvotos.valorvoto) FROM tbcongregacao, tabvotos WHERE tbcongregacao.codcongregacao LIKE '1' AND tbcongregacao.codcongregacao LIKE tabvotos.codcongregacao AND tabvotos.mesvoto LIKE 'Fevereiro' AND tabvotos.datavoto >= '01/02/2016' AND tabvotos.datavoto <= '29/02/2016') +
(SELECT SUM(tabreceita.valorreceita) FROM tbcongregacao, tabreceita WHERE tbcongregacao.codcongregacao LIKE '1' AND tabreceita.codcongregacao AND tabreceita.mesreceita LIKE 'Fevereiro' AND tabreceita.datareceita >= '01/02/2016' AND tabreceita.datareceita <= '29/02/2016'),
(SELECT SUM(tbdespesas.valordespesas) FROM tbcongregacao, tbdespesas WHERE tbcongregacao.codcongregacao LIKE '1' AND tbcongregacao.codcongregacao LIKE tbdespesas.codcongregacao AND tbdespesas.mesdespesas LIKE 'Fevereiro' AND tbdespesas.datadespesas >= '01/02/2016' AND tbdespesas.datadespesas <= '29/02/2016')
FROM tbcongregacao

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Tenta assim:

SELECT tbc.codcongregacao, tbc.codigocongregacao, tbc.nomecongregacao,
(SELECT SUM(mis.valormissoes)  FROM tbcongregacao tbc1, tbmissoes mis  WHERE tbc1.codcongregacao = '1' AND tbc1.codcongregacao = mis.codcongregacao AND mis.datamissoes  BETWEEN '2016-02-01' AND '2016-02-2016') +
(SELECT SUM(diz.valordizimo)   FROM tbcongregacao tbc2, tbdizimo diz   WHERE tbc2.codcongregacao = '1' AND tbc2.codcongregacao = diz.codcongregacao AND diz.mesdizimo    BETWEEN '2016-02-01' AND '2016-02-2016') +
(SELECT SUM(vot.valorvoto)     FROM tbcongregacao tbc3, tabvotos vot   WHERE tbc3.codcongregacao = '1' AND tbc3.codcongregacao = vot.codcongregacao AND vot.mesvoto      BETWEEN '2016-02-01' AND '2016-02-2016') +
(SELECT SUM(rec.valorreceita)  FROM tbcongregacao tbc4, tabreceita rec WHERE tbc4.codcongregacao = '1' AND tbc4.codcongregacao = rec.codcongregacao AND rec.mesreceita   BETWEEN '2016-02-01' AND '2016-02-2016') AS receitas,
(SELECT SUM(des.valordespesas) FROM tbcongregacao tbc5, tbdespesas des WHERE tbc5.codcongregacao = '1' AND tbc5.codcongregacao = des.codcongregacao AND des.datadespesas BETWEEN '2016-02-01' AND '2016-02-2016') AS despesas
FROM tbcongregacao tbc

 

Existe forma mais inteligente de fazer isso. Mas seria necessário ver a estrutura e os dados para gerar.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...