un simple Join?

17/12/2004 - 17:15 por Luis Cejas | Informe spam
Hola grupo, debe ser una pavada pero ya estoy muy mareado y no me deja ver
mas

Es muy simple, tengo una tabla con nombres de usuarios y otra tabla con las
password y las fechas de sus password
Ej:
Tabla1
IdUsuario NameUsuario
1 Carlos
2 Jose
3..

Tabla2
IdPass IdUsuario Password FechaPass
1 1 papa 01/06/2004
2 1 pepe 20/06/2004
3 2 pipi 05/05/2004
4 1 popo 01/08/2004
5 1 pupu 18/05/2004
6 2 rerere 12/12/2004
7 3 ythy 01/12/2004
..
La idea de tener una tabla aparte para el password es para poder guardar sus
ultimas 5 y, cuando se cambie de password, no repita una de ellas (política
de seguridad). Significa que la que se valida es la que tiene fecha mas
reciente.

Necesito un simple listado con los usuarios y sus correspondientes password
con la fecha.

T1.IdUsuario, T1.NameUsuario, T2.PassWord, T2.FechaPass

Hace 2 días que lo quiero sacar y no me sale...
gracias a todos,
Luis

Preguntas similare

Leer las respuestas

#1 Edgar Contreras
17/12/2004 - 17:21 | Informe spam
Que tal Luis,

Select T1.IdUsuario, T1.NameUsuario, T2.PassWord, T2.FechaPass
from Tabla1 T1 inner join Tabla2 T2 on T1.IdUsuario=T2.IdUsuario


Saludos,

Edgar Contreras


[Conectado desde Tijuana, B.C. México]

DISCLAIMER: La información es presentada como es, sin ninguna
responsabilidad, sin garantía alguna y no otorga
derecho alguno.



"Luis Cejas" wrote in message
news:%
Hola grupo, debe ser una pavada pero ya estoy muy mareado y no me deja ver
mas

Es muy simple, tengo una tabla con nombres de usuarios y otra tabla con
las
password y las fechas de sus password
Ej:
Tabla1
IdUsuario NameUsuario
1 Carlos
2 Jose
3..

Tabla2
IdPass IdUsuario Password FechaPass
1 1 papa 01/06/2004
2 1 pepe 20/06/2004
3 2 pipi 05/05/2004
4 1 popo 01/08/2004
5 1 pupu 18/05/2004
6 2 rerere 12/12/2004
7 3 ythy 01/12/2004
..
La idea de tener una tabla aparte para el password es para poder guardar
sus
ultimas 5 y, cuando se cambie de password, no repita una de ellas
(política
de seguridad). Significa que la que se valida es la que tiene fecha mas
reciente.

Necesito un simple listado con los usuarios y sus correspondientes
password
con la fecha.

T1.IdUsuario, T1.NameUsuario, T2.PassWord, T2.FechaPass

Hace 2 días que lo quiero sacar y no me sale...
gracias a todos,
Luis



Respuesta Responder a este mensaje
#2 Luis Cejas
17/12/2004 - 17:30 | Informe spam
Edgar, gracias por tu respuesta, pero en realidad esto me trae 5 registros
por cada usuario (los correspondientes a la Tabla Password)
La idea es traer un solo registro por cada usuario


"Edgar Contreras" escribió en el mensaje
news:%
Que tal Luis,

Select T1.IdUsuario, T1.NameUsuario, T2.PassWord, T2.FechaPass
from Tabla1 T1 inner join Tabla2 T2 on T1.IdUsuario=T2.IdUsuario


Saludos,

Edgar Contreras


[Conectado desde Tijuana, B.C. México]

DISCLAIMER: La información es presentada como es, sin ninguna
responsabilidad, sin garantía alguna y no otorga
derecho alguno.



"Luis Cejas" wrote in message
news:%
> Hola grupo, debe ser una pavada pero ya estoy muy mareado y no me deja


ver
> mas
>
> Es muy simple, tengo una tabla con nombres de usuarios y otra tabla con
> las
> password y las fechas de sus password
> Ej:
> Tabla1
> IdUsuario NameUsuario
> 1 Carlos
> 2 Jose
> 3..
>
> Tabla2
> IdPass IdUsuario Password FechaPass
> 1 1 papa 01/06/2004
> 2 1 pepe 20/06/2004
> 3 2 pipi 05/05/2004
> 4 1 popo 01/08/2004
> 5 1 pupu 18/05/2004
> 6 2 rerere 12/12/2004
> 7 3 ythy 01/12/2004
> ..
> La idea de tener una tabla aparte para el password es para poder guardar
> sus
> ultimas 5 y, cuando se cambie de password, no repita una de ellas
> (política
> de seguridad). Significa que la que se valida es la que tiene fecha mas
> reciente.
>
> Necesito un simple listado con los usuarios y sus correspondientes
> password
> con la fecha.
>
> T1.IdUsuario, T1.NameUsuario, T2.PassWord, T2.FechaPass
>
> Hace 2 días que lo quiero sacar y no me sale...
> gracias a todos,
> Luis
>
>
>


Respuesta Responder a este mensaje
#3 Tinoco
17/12/2004 - 18:21 | Informe spam
Hola Luis, esto te debe servir:

Select T1.IdUsuario, T1.NameUsuario, T2.FechaPass, T3.PassWord
from tblUsuario T1
Inner join (Select IdUsuario, Max(T2.FechaPass) FechaPass
From tblPasswords T2
Group by IdUsuario
) T2 on T1.IdUsuario=T2.IdUsuario
Inner join tblPasswords T3
on T2.IdUsuario = T3.IdUsuario and t2.FechaPass = t3.FechaPass

Espero haber ayudado.

Hermilson Tinoco.
MCDBA, MCSD
Colombia

"Luis Cejas" wrote:

Hola grupo, debe ser una pavada pero ya estoy muy mareado y no me deja ver
mas

Es muy simple, tengo una tabla con nombres de usuarios y otra tabla con las
password y las fechas de sus password
Ej:
Tabla1
IdUsuario NameUsuario
1 Carlos
2 Jose
3..

Tabla2
IdPass IdUsuario Password FechaPass
1 1 papa 01/06/2004
2 1 pepe 20/06/2004
3 2 pipi 05/05/2004
4 1 popo 01/08/2004
5 1 pupu 18/05/2004
6 2 rerere 12/12/2004
7 3 ythy 01/12/2004
...
La idea de tener una tabla aparte para el password es para poder guardar sus
ultimas 5 y, cuando se cambie de password, no repita una de ellas (política
de seguridad). Significa que la que se valida es la que tiene fecha mas
reciente.

Necesito un simple listado con los usuarios y sus correspondientes password
con la fecha.

T1.IdUsuario, T1.NameUsuario, T2.PassWord, T2.FechaPass

Hace 2 días que lo quiero sacar y no me sale...
gracias a todos,
Luis




Respuesta Responder a este mensaje
#4 Edgar Contreras
17/12/2004 - 18:26 | Informe spam
Bueno... eso no fue lo que dijiste... Pediste los registros con su fecha,
no el más reciente!... :).. pero para trabajarlo lo puedes hacer:

Select T1.IdUsuario, T1.Nombre, T2.Pass, T2.FechaPass
from Usuarios T1 inner join Claves T2 on T1.IdUsuario=T2.IdUsuario
order by t1.idusuario asc, t2.fechapass desc

Select
u.idusuario,
u.nombre,
(select top 1 c.pass from claves c where c.idusuario=u.idusuario order by
fechapass desc) as Clave,
(select top 1 c.fechapass from claves c where c.idusuario=u.idusuario order
by fechapass desc) as FechaClave
from
usuarios u
order by u.idusuario

La estructura que tengo en las tablas de prueba es básicamente la misma que
tu planteaste, y si ejecuto los querys que te pongo arriba, los resultados
son:

IdUsuario Nombre Pass FechaPass
1 Jose Clave4 2004-04-01 00:00:00.000
1 Jose Clave3 2004-03-01 00:00:00.000
1 Jose Clave2 2004-02-01 00:00:00.000
1 Jose Clave1 2004-01-01 00:00:00.000
2 Armando Clave4 2004-04-01 00:00:00.000
2 Armando Clave3 2004-03-01 00:00:00.000
2 Armando Clave2 2004-02-01 00:00:00.000
2 Armando Clave1 2004-01-01 00:00:00.000
3 Pedro Clave1 2004-11-01 00:00:00.000
4 Carmen Clave8 2004-12-01 00:00:00.000
4 Carmen Clave7 2004-01-01 00:00:00.000
4 Carmen Clave2 2003-12-01 00:00:00.000
4 Carmen Clave6 2003-12-01 00:00:00.000
4 Carmen Clave5 2003-05-01 00:00:00.000
4 Carmen Clave4 2003-04-01 00:00:00.000
4 Carmen Clave3 2003-03-01 00:00:00.000
4 Carmen Clave2 2003-02-01 00:00:00.000
4 Carmen Clave1 2003-01-01 00:00:00.000
5 Josefina Clave1 2004-12-01 00:00:00.000

(19 row(s) affected)

idusuario nombre Clave FechaClave
1 Jose Clave4 2004-04-01 00:00:00.000
2 Armando Clave4 2004-04-01 00:00:00.000
3 Pedro Clave1 2004-11-01 00:00:00.000
4 Carmen Clave8 2004-12-01 00:00:00.000
5 Josefina Clave1 2004-12-01 00:00:00.000

(5 row(s) affected)


Espero que te sirva.


Saludos,

Edgar Contreras


[Conectado desde Tijuana, B.C. México]

DISCLAIMER: La información es presentada como es, sin ninguna
responsabilidad, sin garantía alguna y no otorga
derecho alguno.



"Luis Cejas" wrote in message
news:
Edgar, gracias por tu respuesta, pero en realidad esto me trae 5 registros
por cada usuario (los correspondientes a la Tabla Password)
La idea es traer un solo registro por cada usuario

Respuesta Responder a este mensaje
#5 Javier Loria
17/12/2004 - 18:43 | Informe spam
Hola:
Te lo detallo por pasos para ver si se entiende.
Si:
=SELECT IdUsuario, MAX(IDPass) AS UltimoIDPass
FROM Tabla2
GROUP BY IDUsuario
= Te da la ultima clave valida (IDPass) del usuario entonces:
=SELECT Tabla1.IdUsuario
, Tabla1.NameUsuario
, Tabla2.Password
, Tabla2.FechaPass
FROM Tabla1
JOIN (SELECT IdUsuario, MAX(IDPass) AS UltimoIDPass
FROM Tabla2
GROUP BY IDUsuario) AS Ultima
ON Tabla1.IdUsuario=Ultima.IdUsuario
JOIN Tabla2
ON Tabla2.IDPass=Ultima.UltimoIDPass
= Una mejor alternativa seria eliminar el IdPass, y usar una llave
primaria compuesta de IdUsuario, Fecha.
Espero te sirva,
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"Luis Cejas" wrote in message
news:#
Hola grupo, debe ser una pavada pero ya estoy muy mareado y no me deja ver
mas

Es muy simple, tengo una tabla con nombres de usuarios y otra tabla con


las
password y las fechas de sus password
Ej:
Tabla1
IdUsuario NameUsuario
1 Carlos
2 Jose
3..

Tabla2
IdPass IdUsuario Password FechaPass
1 1 papa 01/06/2004
2 1 pepe 20/06/2004
3 2 pipi 05/05/2004
4 1 popo 01/08/2004
5 1 pupu 18/05/2004
6 2 rerere 12/12/2004
7 3 ythy 01/12/2004
..
La idea de tener una tabla aparte para el password es para poder guardar


sus
ultimas 5 y, cuando se cambie de password, no repita una de ellas


(política
de seguridad). Significa que la que se valida es la que tiene fecha mas
reciente.

Necesito un simple listado con los usuarios y sus correspondientes


password
con la fecha.

T1.IdUsuario, T1.NameUsuario, T2.PassWord, T2.FechaPass

Hace 2 días que lo quiero sacar y no me sale...
gracias a todos,
Luis



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida