Jump to content
Fórum Script Brasil
  • 0

Reduzir SELECT


AlexandrePacheco
 Share

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...