Fórum Select count em duas tabelas #622290

22/05/2024

0

Pessoal, estou montando uma rotina para mesclar contas.
Então a ideia é primeiro contar os registros duplicados. A rotina abaixo faz isso, mas queria juntar tudo numa unica SQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Close;  //verificando quantas contas existem na ORIGEM
SQL.Clear;
SQL.Add(''''SELECT COUNT(*) AS TOT'''');
SQL.Add(''''FROM TBDUPLICATAS'''');
SQL.Add(''''WHERE COD_CEDENTE = :COD'''');
ParamByName(''''COD'''').AsInteger:= StrToInt(edCodOrigem.Text);
Open;
Edit1.Text := IntToStr(qrAux.FieldByName(''''TOT'''').AsInteger);
 
Close; //verificando quantas contas existem no DESTINO
SQL.Clear;
SQL.Add(''''SELECT COUNT(*) AS TOT'''');
SQL.Add(''''FROM TBVENCIDAS'''');
SQL.Add(''''WHERE COD_CEDENTE = :COD'''');
ParamByName(''''COD'''').AsInteger:= StrToInt(edCodOrigem.Text);
Open;
Edit2.Text := IntToStr(qrAux.FieldByName(''''TOT'''').AsInteger);
Renan

Renan

Responder

Posts

01/08/2024

Valdir Sola

Pessoal, estou montando uma rotina para mesclar contas.
Então a ideia é primeiro contar os registros duplicados. A rotina abaixo faz isso, mas queria juntar tudo numa unica SQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Close;  //verificando quantas contas existem na ORIGEM
SQL.Clear;
SQL.Add(''''SELECT COUNT(*) AS TOT'''');
SQL.Add(''''FROM TBDUPLICATAS'''');
SQL.Add(''''WHERE COD_CEDENTE = :COD'''');
ParamByName(''''COD'''').AsInteger:= StrToInt(edCodOrigem.Text);
Open;
Edit1.Text := IntToStr(qrAux.FieldByName(''''TOT'''').AsInteger);
 
Close; //verificando quantas contas existem no DESTINO
SQL.Clear;
SQL.Add(''''SELECT COUNT(*) AS TOT'''');
SQL.Add(''''FROM TBVENCIDAS'''');
SQL.Add(''''WHERE COD_CEDENTE = :COD'''');
ParamByName(''''COD'''').AsInteger:= StrToInt(edCodOrigem.Text);
Open;
Edit2.Text := IntToStr(qrAux.FieldByName(''''TOT'''').AsInteger);

Ler Mais...




Utiliza o Union

SQL.Clear;
SQL.Add(''''SELECT COUNT(*) AS TOT'''');
SQL.Add(''''FROM TBDUPLICATAS'''');
SQL.Add(''''WHERE COD_CEDENTE = :COD'''');

SQL.Add('UNION')

SQL.Add(''''SELECT COUNT(*) AS TOT'''');
SQL.Add(''''FROM TBVENCIDAS'''');
SQL.Add(''''WHERE COD_CEDENTE = :COD'''');
Open;
Responder

Gostei + 0

01/08/2024

Arthur Heinrich

Você não precisa fazer uma query para cada cedente. Dá para trazer tudo de uma vez:

1
2
3
4
5
6
7
8
9
10
11
SELECT O.COD_CEDENTE, O.ORIGEM, D.DESTINO
FROM
  ( SELECT COD_CEDENTE, COUNT(1) AS ORIGEM
    FROM TBDUPLICATAS
    GROUP BY COD_CEDENTE ) O
    LEFT OUTER JOIN
      ( SELECT COD_CEDENTE, COUNT(1) AS DESTINO
        FROM TBVENCIDAS
        GROUP BY COD_CEDENTE ) D
        ON D.COD_CEDENTE = O.COD_ORIGEM
ORDER BY 1

Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar