Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-08-2010
Avatar de thelibmx
thelibmx thelibmx is offline
Miembro
 
Registrado: mar 2007
Posts: 515
Poder: 18
thelibmx Va por buen camino
Valores totales de DISTINC

Hola tengo dos dudas con distinc y delphi, trabajo con delphi2010,BD(DBF), con ADOConnection1, ADODataSet1, DataSource1, ADOQuery1, DBGrid1 y mi
tabla es algo mas o menos asi:

Código:
                      campo1_|_ campo2 _|campo3 | campo4  |  campo5
      registro1|     1      |     1         |  1       |  0          | 1
      registro2|     2      |     2         |  1       |  1          | 2
      registro3|     3      |     1         |  2       |  3          | 2
      registro4|     3      |     3         |  2       |  4          | 5
      registro5|     5      |     3         |  2       |  2          | 6 
      registro6|     4      |     3         |  1       |  1          | 6
bien si yo hago esto


Código Delphi [-]
...
...
 form1.ADOQuery1.sql.add('SELECT  distinc campo1 from tabla1'); 
 form1.ADOQuery1.execsql;
 form1.ADOQuery1.Active:=true;
..
obtengo algo asi en un dbgrid


Código SQL [-]
|campo1|                                                            |campo2|
1                                                                            1
2                      si fuera el campo 2 seria asi.. etc          2
3                                                                            3
4
5

esto solo es por un campo (aqui parte de mi segunda duda que la planteare mas adelante)

Mi pregunta es, como hago para saber el total de los valores diferentes que distinc encuentra, y si es posible como puedo agregarlos al grid para que quede algo similar a esto

Código SQL [-]
 
|campo1| valores |          
    1              1                                                                
    2              1     
    3              2                                                           
    4              1 
    5              1

donde campo es el numero arrojado por distinc y "valores" es el numero total de ocurrencias que hay por cada tipo diferente que encuentra distinc...

Y la otra duda o pregunta mas bien es si es posible utilizar distinc con diferentes campos a la ves, digamos que mi consulta seria algo asi..
Código SQL [-]

SELECT  distinc campo1,campo2,campo3,campo4 from tabla1  

o asi

SELECT  (distinc campo1,campo2,campo3,campo4) from tabla1  o

o asi

SELECT  distinc (campo1),distinc (campo2),distinc (campo3),distinc (campo4) from tabla1
pregunto por que de cualquiera de esas formas me manda un error de sintaxis, o comillas perdidas y por mas que he movido no encuentro la forma

el resultado que esperaria en el grid seria algo mas o menos asi

Código SQL [-]

                    campo1_|_ campo2 _|campo3 | campo4  | 
                  |     1      |     1         |  1       |  0          | 
                  |     2      |     2         |  2       |  1          | 
                  |     3      |     3         |           |  2          | 
                  |     4      |                |          |  3          |  
                  |     5      |                |          |  4          |  
                  |             |               |           |             |



Si se preguntan por que asi, es para saber el numero de ocurrencias que hay por cada campo, uso un dbgrid por que es lo que se me ocurrio pero si hubieran otros componentes o alguna otra manera que me pudiera servir pues es bienvenida...

si no me supe explicar bien por favor diganmelo para tratar de explicar mas...

por su atencion gracias
__________________
En movimiento...
Responder Con Cita
  #2  
Antiguo 25-08-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Código SQL [-]
Select Campo1, Count(Campo1)
From TuTabla
Group By Campo1
__________________

Responder Con Cita
  #3  
Antiguo 25-08-2010
Avatar de thelibmx
thelibmx thelibmx is offline
Miembro
 
Registrado: mar 2007
Posts: 515
Poder: 18
thelibmx Va por buen camino
Lightbulb

Cita:
Empezado por ContraVeneno Ver Mensaje
Código SQL [-]Select Campo1, Count(Campo1) From TuTabla Group By Campo1
MUCHAS GRACIAS !! ContraVeneno es lo que queria.

ahora si quisiera obtener los valores individualmente para asiganarlos a una variable por ejemplo algo asi

Código:
|campo1| valores |          
    1              1                                                                
    2              1     
    3              2                                                           
    4              1 
    5              1campo1.valor1=1;
campo1.valor2=1;
campo1.valor3=2;
campo1.valor4=1;
campo1.valor5=1;
¿Tendria que hacer la consulta de uno por uno o se podria dentro del mismo query, por ejemplo cuando hace distinc encuentra 1 y despues cuenta cuantos hay de 1, en ese lapso asignar el valor del numero de ocurrencias, y luego con el otro valor poder obtenerlo y asi con los demas valores?.


y mi ultima consulta (espero) con ese codigo que me diste lo hace por un solo campo que en este caso es campo1, si quisiera que fuera lo mismo pero para todos los campos de la tabla es posible hacer algo similar a esto

Código SQL [-]
 select *, count * from tabla group by *

o tendria que hacer todo campo por campo metiendolo en algun ciclo

Gracias por tu ayuda y la paciencia
__________________
En movimiento...
Responder Con Cita
  #4  
Antiguo 25-08-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Cita:
Empezado por thelibmx Ver Mensaje
...ahora si quisiera obtener los valores individualmente para asiganarlos a una variable...
¿Tendria que hacer la consulta de uno por uno o se podria dentro del mismo query...
No habría necesidad de ponerlos en variables, ya que los valores ya se encuentran en el query. Por ejemplo con la consulta:
Código SQL [-]
Select Campo1, Count(Campo1) as Suma
From TuTablaGroup By Campo1

Puedes buscar los valores utilizando "Locate":
Código Delphi [-]
with TuQuery do begin
 If Locate('Campo1', 5, [ioPartialKey]) then begin
   showmessage('Esta es la suma para el valor 5: ' + FieldByName('Suma').AsString);
 end; //If
end; //with


Cita:
Empezado por thelibmx Ver Mensaje
...es posible hacer algo similar a esto select *, count * from tabla group by *

o tendria que hacer todo campo por campo metiendolo en algun ciclo
No, eso no te funcionaría.
Habría que ver lo que realmente quieres para ver como se tendría que hacer, pero esa consulta no te funcionaría.
__________________

Responder Con Cita
  #5  
Antiguo 25-08-2010
Avatar de thelibmx
thelibmx thelibmx is offline
Miembro
 
Registrado: mar 2007
Posts: 515
Poder: 18
thelibmx Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
Habría que ver lo que realmente quieres para ver como se tendría que hacer, pero esa consulta no te funcionaría.

Ok intentare explicar un poco mas, me apoyare de esta imagen

http://www.imaxenes.com/imagen/ejemp...9h.jpg.html###

mi tabla es como la fig.1 pero con mas campos digamos pueden ser 15 como 300 o mas pueden tener nombre similar o diferente, y registros pues desde 200 hasta 3000 +/-, con el codigo que tu me has enseñado he logrado llegar a la fig.2, mi pregunta es habra manera de hacer algo similar como en la figura 2 pero que me muestre todos los campos para que quede como en la fig.3, pero con todo los campos de la tabla? ...

se que es muy dificil mostrarlo al grid, de hecho no se si es posible, por eso pregunto mucho, me dedico hacer analisis y revisiones y se que hay programas que ya estan diseñados para esto, pero por el momento no estan a mi alcance poderlos adquirir, entonces como dicen "hagalo usted mismo" , o tal ves no necesariamente que se mostraran en un grid, creo que esto es solo la punta del iceberg no?
__________________
En movimiento...
Responder Con Cita
  #6  
Antiguo 26-08-2010
Avatar de thelibmx
thelibmx thelibmx is offline
Miembro
 
Registrado: mar 2007
Posts: 515
Poder: 18
thelibmx Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
Código SQL [-]Select Campo1, Count(Campo1) as Suma From TuTablaGroup By Campo1

Código Delphi [-]

una ultima pregunta ContraVeneno si de esa consulta quisiera obtener solo los valores que se repiten mas de una ves como seria ¿?

con lo que he visto de aqui, quise intentar algo asi pero pues no corre por que seguramente esta mal utilizado

Código SQL [-]
Select Campo1, Count(Campo1) as Suma
From TuTabla where count(campo1)>1 Group By Campo1

se supone que distinc Indica que queremos seleccionar sólo los valores distintos. yo busco la funcion contraria no se si exista, que muestre solo los valores iguales?

digamos que quisiera obtener solo los valores que se repiten de un campo, con datos que deben ser unicos,por ejemplo en un campo clave, saber si un valor se repite de una coleccion de datos. no se si me explique bien...
__________________
En movimiento...
Responder Con Cita
  #7  
Antiguo 26-08-2010
Avatar de thelibmx
thelibmx thelibmx is offline
Miembro
 
Registrado: mar 2007
Posts: 515
Poder: 18
thelibmx Va por buen camino
quise editar el mensaje anterior para no poner tantos mensajes pero ya no me dejo por que se supone que el administrador solo me permite editar el mensaje 25 minutos despues de haber posteado,(en teoria tenia 15 minutos cuando lo intente editar) en fin

aca intente esto otro pero me manda error
Código SQL [-]
('Select '+duplicado.text+', Count('+duplicado.text+')as casos, (Count('+duplicado.text+')/100) as Porcentaje   from '+Nom_tab.Text+' Group By '+duplicado.text+'  Having ('+duplicado.text+'>1) ' );
ese es mi query real pero me marca EoleException 'Operador/operand type mistmach' supongo que alguna comilla o no reconoce el mayor que ">"


seguire probando..
Gracias
__________________
En movimiento...
Responder Con Cita
  #8  
Antiguo 26-08-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Código SQL [-]
Select Campo1, Count(Campo1) as Suma 
From TuTabla 
Group By Campo1
Having Count(Campo1) > 1
__________________

Responder Con Cita
  #9  
Antiguo 26-08-2010
Avatar de thelibmx
thelibmx thelibmx is offline
Miembro
 
Registrado: mar 2007
Posts: 515
Poder: 18
thelibmx Va por buen camino
Thumbs up

Cita:
Empezado por ContraVeneno Ver Mensaje
Código SQL [-]Select Campo1, Count(Campo1) as Suma From TuTabla Group By Campo1 Having Count(Campo1) > 1
Maestro de maestros!!
muchas gracias ContraVeneno
con esto ya complete mi trabajo al 95%
+10
__________________
En movimiento...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Totales de sumatorias Behemot SQL 8 18-08-2010 18:36:30
incluir totales o no reevil MySQL 12 06-05-2006 07:42:05
Totales con FreeReports brandolin Impresión 0 28-08-2004 07:13:37
Problemas con Totales pruz Impresión 3 26-07-2004 21:08:48
Campo totales R.Rodriguez Tablas planas 1 21-05-2004 08:28:45


La franja horaria es GMT +2. Ahora son las 14:18:43.


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
Copyright 1996-2007 Club Delphi