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
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
Curtir tópico
+ 0
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
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); |
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
Clique aqui para fazer login e interagir na Comunidade :)