Select count em duas tabelas
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
Então a ideia é primeiro contar os registros duplicados. A rotina abaixo faz isso, mas queria juntar tudo numa unica SQL
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
Curtidas 0
Respostas
Valdir Sola
22/05/2024
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
Então a ideia é primeiro contar os registros duplicados. A rotina abaixo faz isso, mas queria juntar tudo numa unica SQL
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);
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;
GOSTEI 0
Arthur Heinrich
22/05/2024
Você não precisa fazer uma query para cada cedente. Dá para trazer tudo de uma vez:
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
GOSTEI 0