Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Como utilizo count ?? (https://www.clubdelphi.com/foros/showthread.php?t=60722)

kia 11-10-2008 18:12:40

Como utilizo count ??
 
Tengo una sola tabla y el count no se hacerlo fubcionar para saber :

Cuantos equipos y modelos hay en los diferentes ciudades.
Campos: equipo, marca, modelo, ciudad. (
Código SQL [-]
       
        Close;
        SQL.Clear;
        SQL.Add('select Count (equipo,modelo) from '+NomTabla); 
        sql.Add('group by ciudad');
         open
Empleo D6 , componentes IBX, Fireb 1.5
Necesitaria una ayudita soy novato, ademas como puedo hacer visible los resultados.. Muchas Gracias.

enecumene 11-10-2008 18:14:58

Hola, el COUNT debes aplicarlo por cada campo:

Código SQL [-]
Select Count(campo1), Count(campo2) from Tabla where ...

Saludos.

kia 12-10-2008 19:53:48

Quizas no me he explicado bien... soy novato... pongo hasta donde he llegado me funciona pero tarda un montonnnnnn.
Me lo podeis arreglar o mejorar para que me tarde menos..gracias.

Código SQL [-]
 procedure TEstadillo.Contador(Sender: TObject);
 var
 mode,mode1:string;
 yciudad,zciudad:string;
 ncuantos,:integer;
 begin

 DMTablas.hciudad.First;
 while not DMTablas.hciudad.eof do // ciudades
    begin  //recorre ciudades y  cta.equipos
    yciudad:=DMTablas.hciudadCIUDAD.Value;
    DMTablas.htipos.First;
    while not DMTablas.htipos.eof do //tipos de equipos
       begin
       mode:=DMTablas.htiposTIPO.Value;

       With MDOQLME do //query listado general 
        Begin
        Close;
        SQL.Clear;
        SQL.Add('select Count (*) from EQUIPOS');
        SQL.Add('Where CIUDAD=:pciudad');
        SQL.Add('AND EQUIPO=:pequipo');
        SQL.Add('AND MODELO=:pmodelo');
        ParamByName('pciudad').value:=yciudad;
        ParamByName('pequipo').value:=mode;
        ParamByName('pmodelo').value:=mode1;
        sql.Add('group by ciudad,equipo,modelo');
        open;
        ncuantos:=MDOqLME.fields[0].asinteger;
       end;
       //guardo los datos en una tabla para verla en un Rxdbgrid
       DMTablas.Tcontar.Append;
       if ncuantos<>0 then   begin //añade solo si hay equipos
          if zciudad<>yciudad then //evita repeticion de la ciudad en el RXdbgrid
             DMTablas.Tcontar.FieldByName('ciudad').value:=yciudad;
        zciudad:=yciudad; 
        DMTablas.Tcontar.FieldByName('equipo').value:=mode;
        DMTablas.Tcontar.FieldByName('marca').value:='---------------';   
        //DMTablas.Tcontar.FieldByName('modelo').value:='Total -------> ';
        DMTablas.Tcontar.FieldByName('modelo').value:=mode1;
        DMTablas.Tcontar.FieldByName('cantidad').value:=inttostr(ncuantos);
        DMTablas.Tcontar.Post;
        end;

    DMTablas.hmodelos.next;
    end;
    DMTablas.htipos.next;
    end;
    DMTablas.hciudad.next;
   end;
 end;

Los datos salen asi:
Código:

Ciudad    equipo            marca      modelo  cantidad
 Granada      televisores                  avg          5
              televisores                  mmf        10
 Merida      televisores                  avg          2
              dvd                          fer          7         
......

Como ya dije soy novato... algun curso..gracias

FGarcia 13-10-2008 02:40:16

Cita:

Empezado por kia (Mensaje 319661)

With MDOQLME do //query listado general
Begin Close;
SQL.Clear;
SQL.Add('select Count (*) from EQUIPOS');
SQL.Add('Where CIUDAD=:pciudad');
SQL.Add('AND EQUIPO=:pequipo');
SQL.Add('AND MODELO=:pmodelo');
sql.Add('group by ciudad,equipo,modelo');
ParamByName('pciudad').value:=yciudad;
ParamByName('pequipo').value:=mode;
ParamByName('pmodelo').value:=mode1;
open;
ncuantos:=MDOqLME.fields[0].asinteger;
end;
[/code]



Hola!

1. NOVATO es marca registrada de Caral Enterprises Inc. asi que ojo y te ponga una demanda.
2. No mencionas que motor de bd usas y con que componentes accesas a ese motor ni la version de delphi
3. Solo hago notar que en la sentencia sql que esta en negritas (la puse en esa posicion) tu la tenias al final, despues de pasar los parametros. No se si eso resuelva el problema pero no dejes de comentarnos tus experiencias.

Caro 13-10-2008 03:11:01

Hola kia, con una consulta y haciendo la agrupación por los campos que necesites debería funcionarte.

Código Delphi [-]
 With IbQuery do
  begin 
   Close;
   SQL.Clear;
   SQL.Add('Select ciudad, equipo, modelo, Count(ciudad)'); 
   SQL.Add('From '+NomTabla); 
   sql.Add('Group by ciudad, equipo, modelo');
   open;
  end;

Saluditos

enecumene 13-10-2008 15:46:47

Hola, ya FGarcía y Caro te ha dados buenas respuestas, debería funcionarte y ... ¡Cuidado con lo de Novato!, ¡Es marca registrada como dice el compañero FGarcía! :D :D ;)

Saludos.


La franja horaria es GMT +2. Ahora son las 14:07:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi