Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-02-2012
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Consulta SQL

Hola,buen dia.. quiero realizar una consulta de una tabla la cual tiene los siguientes campos:

id,usuario,direccion, fecha

y tiene esta informacion

1,ono,xxxxx,2011-12-12
2,cali,xxxxx,2011-12-12
3,ono,iiiiiii,2012-10-12
4,cali,ooooo,2011-01-01

la consulta consiste en obtener los usuarios y la direccion mas actual, esto checandolo con la fecha
3,ono,iiiiiii,2012-10-12
2,cali,xxxxx,2011-12-12

nose si exista una funcion que lo de automatico...
Responder Con Cita
  #2  
Antiguo 29-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Nunca lo he hecho con fechas pero intenta asi:
Código SQL [-]
Select max(fecha) from tutabla.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 29-02-2012
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
marca un mensaje de error

Msg 8120, Level 16, State 1, Line 1
Column tabla.id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Responder Con Cita
  #4  
Antiguo 29-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Otra mas:
Código SQL [-]
select DISTINCT id, usuario, direccion, MAX(fecha) as Fecha from tutabla
Group by id, usuario, direccion
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 29-02-2012
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
no marca error, pero como resultado se trae todos los registros no hace caso del distinct
Responder Con Cita
  #6  
Antiguo 29-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Si hace caso del DISTINCT lo que pasa es que se trae la información por ID.
No se que BD usas, en algunas no acepta el Last, pruebalo:

Código SQL [-]
select DISTINCT id, usuario, direccion, LAST(fecha) as Fecha from tutabla
Group by id, usuario, direccion

O

Código SQL [-]
select  LATS(fecha) as fecha, Id, usuario, direccion from tutabla
Group by id, usuario, direccion

Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 29-02-2012
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
negativo, estoy usando sql server no detecta el last.
Responder Con Cita
  #8  
Antiguo 29-02-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
En Firebird sería algo así:

Código SQL [-]
Select First 1 Campos From Tabla Order By Fecha Desc

En MS SQL Server debería funcionar con "Top":

Código SQL [-]
Select Top 1 Campos From Tabla Order By Fecha Desc

Saludos positivos.

Edito: Ahora veo que se refería a "los" usuarios.

Última edición por Al González fecha: 29-02-2012 a las 02:22:46.
Responder Con Cita
  #9  
Antiguo 29-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Estaba con el ID, en realidad es el usuario:
Defines las diferencias entre usuarios, son estos los que se repiten No el ID.
A ver asi:

Código SQL [-]
select DISTINCT usuario, ID, direccion, MAX(fecha) as Fecha from tutabla
Group by usuario, ID, direccion

Saludos
__________________
Siempre Novato
Responder Con Cita
  #10  
Antiguo 29-02-2012
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Cita:
Empezado por Al González Ver Mensaje
En Firebird sería algo así:


Código SQL [-]Select First 1 Campos From Tabla Order By Fecha Desc



En MS SQL Server debería funcionar con "Top":


Código SQL [-]Select Top 1 Campos From Tabla Order By Fecha Desc



Saludos positivos.

Edito: Ahora veo que se refería a "los" usuarios.


esta consulta se trae los repetidos tambien...
Responder Con Cita
  #11  
Antiguo 29-02-2012
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
no me sigue trayendo todos ...
Responder Con Cita
  #12  
Antiguo 29-02-2012
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Cita:
Empezado por Caral Ver Mensaje
Hola
Estaba con el ID, en realidad es el usuario:
Defines las diferencias entre usuarios, son estos los que se repiten No el ID.
A ver asi:


Código SQL [-]select DISTINCT usuario, ID, direccion, MAX(fecha) as Fecha from tutabla
Group by usuario, ID, direccion




Saludos
se sigue trayendo todos... sin importar donde coloque el usuario..
Responder Con Cita
  #13  
Antiguo 29-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Imposible, no me lo creo.
El distinc TIENE que enviar solo un nombre de usuario, nunca repetirlos.
Estas completamente segura ????.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #14  
Antiguo 29-02-2012
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
si segurisima, si la utilizo con el puro usuario ahi si nos los repite,

Código SQL [-]
select distinct usuario from registros




pero nada mas le agrego el campo de la fecha y se trae todos..
Responder Con Cita
  #15  
Antiguo 29-02-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Algún experto en SQL vendrá dentro de un rato, pero mientras tanto hice esta prueba (en Firebird) y funcionó:

Código SQL [-]
Select ID, IDContrato, Fecha From PeriodoFacturacion PF
  Where ID = (Select First 1 ID From PeriodoFacturacion Where IDContrato = PF.IDContrato Order By Fecha Desc)

Es probable que me equivoque (otra vez ), pero en tu caso sería algo parecido a esto:

Código SQL [-]
Select * From MenudaTabla MT
  Where ID = (Select Top 1 ID From MenudaTabla Where Usuario = MT.Usuario Order By Fecha Desc)

A ver qué tal...
Responder Con Cita
  #16  
Antiguo 29-02-2012
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Hola siii, he probado con la sentencia sql y ha funcionado...
Responder Con Cita
  #17  
Antiguo 29-02-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por amerika111 Ver Mensaje
Hola siii, he probado con la sentencia sql y ha funcionado...
De nada.

Aunque seguramente debe haber una mejor forma de armar esa sentencia.


Carlos: Tengo entendido que Distinct aplica a toda la fila devuelta, no solamente a un campo. Es decir, evita filas idénticas (combinación de todos los campos seleccionados).

¿Gustas una cerveza o una limonada? Acá la jornada ha estado larga.
Responder Con Cita
  #18  
Antiguo 29-02-2012
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
oo no si, muchas gracias..
Responder Con Cita
  #19  
Antiguo 29-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Amigo, después de esto necesito un vino.
Si, me parece que por ahí van los tiros, el distinct no esta haciendo su trabajo, por eso me encanta el DistinctRow pero solo en access lo he podido hacer funcionar.
Esta lo he probado y hace lo que tiene que hacer, pero en access:

Código SQL [-]
SELECT DistinctRow  Max(fecha),  ID, Nombre, Dirección  from Tabla 
Group by Id, nombre, dirección

En firebird he tenido que usar el Last.
Saludos
__________________
Siempre Novato
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
consulta sobre una consulta :D PablorD MySQL 4 02-06-2010 21:59:51
Realizar una consulta sobre los registros que devuelve otra consulta Borjaserrano Firebird e Interbase 12 01-10-2007 23:19:44
Consulta dentro de otra consulta judit25 Conexión con bases de datos 1 25-06-2007 15:52:15
consulta sobre consulta superhopi SQL 2 16-05-2003 19:01:47


La franja horaria es GMT +2. Ahora son las 23:00:38.


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