Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-01-2011
luk2009 luk2009 is offline
Miembro
 
Registrado: abr 2009
Posts: 33
Poder: 0
luk2009 Va por buen camino
campos con valores repetidos

Cita:
numero fecha cliente evento estatus
100001 15/01/2010 0001 BA01 PENDIENTE
100002 15/01/2010 0001 BA01 PENDIENTE
100005 15/01/2010 0001 BA01 PENDIENTE
100020 15/01/2010 0001 BA01 PENDIENTE
100025 15/01/2010 0021 MA01 PENDIENTE
100028 15/01/2010 0021 MA01 PENDIENTE
100041 15/01/2010 0001 MA01 PENDIENTE

Quiero que se vea:

numero fecha cliente evento estatus
100001 15/01/2010 0001 BA01 PENDIENTE
100025 15/01/2010 0021 MA01 PENDIENTE
100041 15/01/2010 0001 MA01 PENDIENTE

Quiero filtrar por por evento + cliente y cuando estatus sea pendiente.
alguna idea?

Última edición por luk2009 fecha: 23-01-2011 a las 20:12:10.
Responder Con Cita
  #2  
Antiguo 23-01-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código SQL [-]
Select distinct cliente, evento Form tutabla where estatus = 'PENDIENTE' group bye cliente, evento;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 23-01-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Pero ahora mismo cómo lo haces?, ¿un select?, ¿qué base de datos?
Responder Con Cita
  #4  
Antiguo 23-01-2011
luk2009 luk2009 is offline
Miembro
 
Registrado: abr 2009
Posts: 33
Poder: 0
luk2009 Va por buen camino
El problema es que si lo hago como dice caral entonces solo recibo dos campos y quiero obtener todos los campos para visualizarlos en el dbgrid.
la base de datos es firebird 2.1
Código SQL [-]
with DMmonitorenred.ZQactivas do
  begin
    Close;
    SQL.Clear;
    SQL.add('select * from  Activas inner join evento on activas.evento=evento.evento left join acmsub on activas.csid=acmsub.csid ');
    SQL.add(' where completa <> completa ');
    SQL.Add('order by alarmnum desc');
    ParamByName('pcompleta').AsString:='COMPLETADA';

pero con ella obtengo valores repetidos, quiero poder filtrarla y que solo se obtenga lo que indico en el primer mensaje

Última edición por luk2009 fecha: 23-01-2011 a las 20:31:59.
Responder Con Cita
  #5  
Antiguo 23-01-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No se:
Código SQL [-]
Select distinct cliente, evento, numero, fecha  Form tutabla where estatus = 'PENDIENTE' group bye cliente, evento, numero, fecha
El asunto esta en el group by, supongo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 23-01-2011
luk2009 luk2009 is offline
Miembro
 
Registrado: abr 2009
Posts: 33
Poder: 0
luk2009 Va por buen camino
si pongo el campo numero que es primary key y autoincrementable, no me funciona la consulta y me muestra todos los valores repetidos.
Por otro lado queria aclarar que deseo filtrar por el evento, ya que un mismo cliente podria tener dos eventos distintos y quiero que se vean.
Responder Con Cita
  #7  
Antiguo 23-01-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El problema es que tienes varios campos que se repiten, pero otros son diferentes.
Yo trataria de usar, LAST o MIN o MAX, ademas del DISTINCT que es el que te servira.
Tuve un problema similar y recurri a LAST.
En Firebird.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #8  
Antiguo 23-01-2011
luk2009 luk2009 is offline
Miembro
 
Registrado: abr 2009
Posts: 33
Poder: 0
luk2009 Va por buen camino
talvez pueda crear un campo calculado con cliente y evento y hacer el distinct en funcion de este. que piensas?
Responder Con Cita
  #9  
Antiguo 23-01-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Alguna vez he anidado dos select. pero no me hagas mucho caso:
Código SQL [-]
Select distinct cliente, evento Form tutabla 
(select * From tutabla where estatus = 'PENDIENTE')
where estatus = 'PENDIENTE' group bye cliente, evento;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #10  
Antiguo 23-01-2011
luk2009 luk2009 is offline
Miembro
 
Registrado: abr 2009
Posts: 33
Poder: 0
luk2009 Va por buen camino
no es como lo pones, pero he tratado con subconsultas y no caigo con la respuesta pero voy a ponerme a leer mas sobre union y otros detalles.
la idea prodria ser anidar consultas, pero voy a investigar para ver que sale

Última edición por luk2009 fecha: 23-01-2011 a las 20:58:52.
Responder Con Cita
  #11  
Antiguo 23-01-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Solo ideas:
Digamos que tienes dos query, en el primero defines los campos iguales y en el segundo defines todo pero relacionado al query1.
Algo asi:
Código Delphi [-]
Query1.sql.text:= 'Select distinct cliente, evento Form tutabla 
where estatus = ''PENDIENTE'' group bye cliente, evento';
Query1.open;

Query2.sql.text:='select * From tutabla where cliente = '+Query1.Filebyname('cliente').Value;
Query2.open;
Por supuesto muestras en el dbgrid el resultado del query2.
Solo ideas amigo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #12  
Antiguo 23-01-2011
luk2009 luk2009 is offline
Miembro
 
Registrado: abr 2009
Posts: 33
Poder: 0
luk2009 Va por buen camino
Gracias por tu idea. La verdad es que la habia contemplado, pero la necedad de ponerlo todo en una sola consulta, no me ha permitido probarla. Dejame probar y te digo como me va.

Gracias de nuevo
Responder Con Cita
  #13  
Antiguo 24-01-2011
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,
Si quieres filtrar por dos campos tan solo tienes que usar el 'and'

Código Delphi [-]

select from tabla where cliente = 1 and estatus = 'PENDIENTE'

Saludos.
Responder Con Cita
  #14  
Antiguo 02-02-2011
luk2009 luk2009 is offline
Miembro
 
Registrado: abr 2009
Posts: 33
Poder: 0
luk2009 Va por buen camino
Cita:
Empezado por coso Ver Mensaje
Hola,
Si quieres filtrar por dos campos tan solo tienes que usar el 'and'

Código Delphi [-] select from tabla where cliente = 1 and estatus = 'PENDIENTE'


Saludos.
Gracias por tu respuesta, pero ademas de que le falta el * despues del select o por lo menos poner los campos que quiero obtener en la consulta, creo que tambien te falta entender bien lo que deseo. Lo que quiero es agrupar los registros que tienen un mismo valor en un campo especifico y que ya se encuentran dentro de un select que busca los que tengan el valor 'Pendiente'

La verdad que la aproximacion mas cercana a la resolucion del problema es la que me ha dado caral en delphiaccess. Esta es usar un select y en la que selecciono segun el valor minimo o maximo de una cantidad X de registros con un campo con valor repetido.

Ejemplo
Código Delphi [-]
select min(alarmnun) as num, csid, estatus from tabla where estatus ='pendiente' group by csid, estatus order by csid desc
Responder Con Cita
  #15  
Antiguo 02-02-2011
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Cita:
Quiero filtrar por por evento + cliente y cuando estatus sea pendiente.
Ah, entonces entendi mal esta frase. Mil disculpas.
Responder Con Cita
  #16  
Antiguo 02-02-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cita:
Empezado por coso Ver Mensaje
Ah, entonces entendi mal esta frase. Mil disculpas.
No entendiste mal amigo, en principio creo que todos entendimos lo mismo.
Lo que se nos paso por alto fue que luk2009 quería reducir la lista a solo un registro por dato y usando un filtro común no lo hacia.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #17  
Antiguo 02-02-2011
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Si que lo entendi mal, pense que queria filtrar por evento, cliente y estatus.

Cita:
Quiero filtrar por por evento + cliente y cuando estatus sea pendiente
Por que dices que no lo entendi mal, Caral?
Responder Con Cita
  #18  
Antiguo 02-02-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Sera por que yo entendi lo mismo en principio ?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #19  
Antiguo 02-02-2011
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
No te entiendo, no se que quieres decir
Responder Con Cita
  #20  
Antiguo 02-02-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Anem home, sé que ho entens.
Tots ens equivoquem i només tracte de fer-te sentir millor.
No crec que es necessiti filar prim.
Saludos
__________________
Siempre Novato
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Valores por Defecto de campos Daiana SQL 8 12-12-2006 01:36:24
Campos Repetidos en QReport jdangosto Impresión 4 21-10-2005 12:05:41
campos repetidos kryna Conexión con bases de datos 12 14-04-2005 18:35:18
Campos con valores por defecto caiac Firebird e Interbase 1 23-01-2004 17:05:15
Valores en campos numeric xerkan Firebird e Interbase 1 08-12-2003 21:41:43


La franja horaria es GMT +2. Ahora son las 16:33:13.


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