Foros del Web » Programando para Internet » ASP Clásico »

Ordenar registros según fechas anteriores

Estas en el tema de Ordenar registros según fechas anteriores en el foro de ASP Clásico en Foros del Web. Hola, Recurro de nuevo a vosotros por un problema que se me ha planteado y quisiera que me propongan alguna idea... El tema en cuestión ...

  #1 (permalink)  
Antiguo 25/10/2007, 15:29
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Pregunta Ordenar registros según fechas anteriores

Hola,
Recurro de nuevo a vosotros por un problema que se me ha planteado y quisiera que me propongan alguna idea...

El tema en cuestión es ordenar unos registros en función de si aparece o no en fechas anteriores, no se si me explico, la idea es que los usuarios puedan apuntarse a un evento con plazas limitadas y tendrían prioridad los que no hayan asistido al anterior evento, en el caso de que dos usuarios también coincidan en este caso buscar la fecha anterior etc.

De ese modo poder organizar la lista con un orden de preferencia.

¿Alguien ha preparado algo así alguna vez?
SaLu2
  #2 (permalink)  
Antiguo 25/10/2007, 17:08
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Ordenar registros según fechas anteriores

Bueno, así a lo rápido se me ocurre que puedes hacer esto:

1) Le agregas un campo a tu tabla llamado prioridad.
2) Cuando vayas a grabar al usuario, antes lo buscas en la tabla de UsuariosDetalle o donde tengas registrado los usuarios de los eventos anteriores
3) Si no existe le pones 0 al campo de prioridad
4) Si si existe le calculas un consecutivo
5) Ordenas la tabla de usuarios de ese evento por FechaInscripcion y Prioridad

Creo que funcionaría

Saludos
  #3 (permalink)  
Antiguo 26/10/2007, 05:02
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: Ordenar registros según fechas anteriores

Ok gracias Myakire, veré la forma de ponerlo en práctica... ya os comento cosas si necesito un cable.
  #4 (permalink)  
Antiguo 26/10/2007, 07:08
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Ordenar registros según fechas anteriores

mmmm, creo que conque les pusieras un Uno a los que ya han participado y un Cero a los que no, sería suficiente, y la ordenación debería ser por Prioridad, FechaInscripcion

Avisa si ocupas algo más concreto

Saludos
  #5 (permalink)  
Antiguo 26/10/2007, 09:59
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: Ordenar registros según fechas anteriores

Hola de nuevo... le estoy dando vueltas y no estoy seguro de que ese criterio vaya a ser efectivo, a la larga (o no tanto) todos los usuarios habrán participado en algún evento y todos tendrán un 1 porque es un grupo reducido y cerrado de usuarios.

Por si da ideas pongo la estructura actual de las tablas que es bastante sencilla:

Tabla1
Id, Idevento, Idusuario

Tabla2
Idevento, fecha, lugar, etc

Tabla3
Idusuario, nombre, apellidos, etc

Al montar la consulta de la gente que va al evento (que ya está hecha) quiero poner el orden de prioridad, por ahora solo ordeno por el Id
  #6 (permalink)  
Antiguo 26/10/2007, 11:26
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Ordenar registros según fechas anteriores

Cita:
a la larga (o no tanto) todos los usuarios habrán participado en algún evento y todos tendrán un 1
Pues claro, pero tu mencionas que quieres que los que NO han asistido tengan prioridad, cuando todos tengan un 1 pues ahora el único criterio sería la FechaInscripcion ¿o no?
  #7 (permalink)  
Antiguo 26/10/2007, 12:21
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: Ordenar registros según fechas anteriores

En parte es tal y como lo cuentas, pero la idea es que cuando haya una coincidencia en el Idevento anterior al actual, se vaya a consultar el Idevento anterior a realizar la comparación para insertar primero en la lista al que de valor null.

¿Como sería la sentencia para hacerlo?
  #8 (permalink)  
Antiguo 28/10/2007, 16:27
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: Ordenar registros según fechas anteriores

No paro de darle vueltas a esto y no termino de verlo...
¿tal vez con if...then se podría hacer algún tipo de preferencias?
  #9 (permalink)  
Antiguo 30/10/2007, 08:21
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Ordenar registros según fechas anteriores

Cita:
En parte es tal y como lo cuentas, pero la idea es que cuando haya una coincidencia en el Idevento anterior al actual, se vaya a consultar el Idevento anterior a realizar la comparación para insertar primero en la lista al que de valor null.
Lo que esta en negritas .... ¿a qué le llamas coincidencia? ¿dos eventos pueden tener mismo ID?

Lo que esta en cursiva ... ¿qué comparación?

Ya no entiendo
  #10 (permalink)  
Antiguo 30/10/2007, 09:15
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Información Re: Ordenar registros según fechas anteriores

Voy a explicar muy gráficamente la forma de ordenar los registros:

Tabla1
Id, Idevento, Idusuario


Supongamos que tengo tres usuarios (Idusuario): Pepe, Juan, Pedro
más tres eventos (Ideventos): 101, 102, 103

101 > 1º)Pepe, 2º)Pedro
102 > 1º)Juan, 2º)Pedro

El orden que quiero obtener al mostrar los registros del evento 103 en el caso de querer asistir los tres usuarios sería el siguiente:
103 > 1º)Pepe, 2º)Juan, 3º)Pedro

Pepe en primer lugar porque no estubo en el evento 102, Juan en segundo lugar porque coincide con Pedro en el 102 pero no estubo en el 101 a diferencia de Pedro que si estubo en el 101 y será el último de los tres por ser el único que ha asistido a todos los eventos.

Si hubiera más eventos el orden a guardar seguiría estos mismos criterios, siempre se usaría la fecha del evento aunque para mayor facilidad de compresión puse números.
Espero haberme explicado mejor en esta ocasión

Última edición por Uefor; 02/11/2007 a las 14:50
  #11 (permalink)  
Antiguo 02/11/2007, 14:48
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Pregunta Re: Ordenar registros según fechas anteriores

A ver si con el post anterior está mejor explicado y me podeis ayudar, solo me queda esto para dar por "terminada" la aplicación...

He rescatado de las profundidades este post
  #12 (permalink)  
Antiguo 05/11/2007, 11:19
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Ordenar registros según fechas anteriores

Cita:
Pepe en primer lugar porque no estubo en el evento 102, Juan en segundo lugar porque coincide con Pedro en el 102 pero no estubo en el 101 a diferencia de Pedro que si estubo en el 101 y será el último de los tres por ser el único que ha asistido a todos los eventos.
No me queda claro que diferencia hay entre que Pepe haya asistido al 101 pero no al 102, Juan tampoco estuvo en el 101.

Cita:
Si hubiera más eventos el orden a guardar seguiría estos mismos criterios, siempre se usaría la fecha del evento aunque para mayor facilidad de compresión puse números.
mmmm, entonces esos números son en realidad las fechas de los eventos, entonces lo que importa que es hayan asistido "al último" o en base a la antigûedad de los eventos, y al número de eventos a los que han asistido, ¿no es así?

Bueno, pues creo lo único que necesitas es hacer un query para presentar los registros en el orden que quieres:

1) Supongo tienes forma de saber la fecha del último evento al que asistió.
2) Cuando presentes la lista de asistentes, hacer algún join con la tabla donde puedas obtener la fecha del último evento y calculas un campo con el COUNT de los eventos a los que ha asistido antes; ordenas por esos campos y listo.

¿Sabes como hacer ese query?
  #13 (permalink)  
Antiguo 05/11/2007, 15:58
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: Ordenar registros según fechas anteriores

Cita:
No me queda claro que diferencia hay entre que Pepe haya asistido al 101 pero no al 102, Juan tampoco estuvo en el 101.
Muy sencillo, la prioridad se establece en función de la asistencia al último evento, si coinciden en el para poder priorizar buscaremos el siguiente.
Cita:
entonces lo que importa que es hayan asistido "al último" o en base a la antigûedad de los eventos, y al número de eventos a los que han asistido, ¿no es así?
Al último y en caso de coincidir el penultimo y el antepenultimo, etc aunque creo que con remontarno un par de fechas como mucho es suficiente para hacer las prioridades.

La pregunta concreta de la query sería: ¿quien ha ido al último evento (102)? Respuesta: Juan y Pedro, pues Pepe tiene prioridad y por eso será 1º en la 103...

entre Juan y Pedro la respuesta sería ambos por lo tendríamos que remontarnos otra fecha para poder aplicar ese criterio ¿quien ha ido al 101? Pepe y Pedro pues el siguiente de la lista será Juan... ¿me captas la idea ahora?
Cita:
1) Supongo tienes forma de saber la fecha del último evento al que asistió.
2) Cuando presentes la lista de asistentes, hacer algún join con la tabla donde puedas obtener la fecha del último evento y calculas un campo con el COUNT de los eventos a los que ha asistido antes; ordenas por esos campos y listo.
1º)ahora tengo una consulta donde puedo ver las listas seleccionando la fechas de eventos

2º) Esto es precisamente lo que me tiene loco aunque si no veo forma de hacerlo como te he comentado quizás haciendo la consulta como apuntas puede ser una buena solución... la última fecha y luego el COUNT, ¿me orientas por favor?
  #14 (permalink)  
Antiguo 05/11/2007, 17:32
Avatar de CésarBalaguer  
Fecha de Ingreso: octubre-2006
Ubicación: en mi casa
Mensajes: 181
Antigüedad: 18 años, 7 meses
Puntos: 0
Re: Ordenar registros según fechas anteriores

lo que puedes hacer es manejar esa prioridad pero directamente en tu query y ordenarlo por esa misma columna,

Cita:
Tabla1
Id, Idevento, Idusuario

Tabla2
Idevento, fecha, lugar, etc

Tabla3
Idusuario, nombre, apellidos, etc
select
tabla3.idusuario,
tabla3.nombre,
tabla3.apellido,
coalesce(count(tabla1.id),0)
from
tabla1.idusuario
left outer join tabla3 on (tabla1.idusuario=tabla3.idusuario)
where
.......
group by
tabla3.idusuario,
tabla3.nombre,
tabla3.apellido
order by
coalesce(count(tabla1.id),0)


ese query debería funcionar en Sybase, DB2, SQLServer, mas no se si funcione en Access, para comenzar Access no se si maneja la funcion coalesce, asi que por ahi podria sospechar que no... aunque se que tiene una funcion ISNULL que me parece funciona igual
  #15 (permalink)  
Antiguo 05/11/2007, 17:52
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Ordenar registros según fechas anteriores

mi tiro!!, mmmmmmm aaahh, ¿que no estamos en el foro de competencias?
  #16 (permalink)  
Antiguo 06/11/2007, 03:37
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: Ordenar registros según fechas anteriores

Muchas gracias... veré si le saco punta con esto, ya os comento como me va.
SaLu2
  #17 (permalink)  
Antiguo 07/11/2007, 05:17
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Pregunta Re: Ordenar registros según fechas anteriores

Hola de nuevo... estoy adaptando la SQL de Myakire a mi aplicación y db, a fin de cuentas es exactamente lo que necesito

Pero me surgen algunas dudas con ciertos valores que no se a que responden:

dbo.Usuarios
dbo.Eventos
dbo.EventosUsuario
UltimoEvento
NumEventos
Participaciones
Participaciones.IdUsuario
Participaciones.NumEventos

No se a que equivalen dada la estructura de mi db
¿podrías detallarme un poco que significan?¿puede no funcionar con access?
SaLu2
  #18 (permalink)  
Antiguo 07/11/2007, 08:13
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Ordenar registros según fechas anteriores

Las tres tablas a la derecha son basadas exactamente en la estructura que pusiste en el post 5:

Cita:
Tabla1 (EventosUsuario)
Id, Idevento, Idusuario

Tabla2 (Eventos)
Idevento, fecha, lugar, etc

Tabla3 (Usuarios)
Idusuario, nombre, apellidos, etc
NumEventos y Participaciones son los campos calculados que te mencioné en algún post anterior.

Participaciones Es una consulta para obtener las participaciones de los usuarios a eventos anteriores y los campos Participaciones.IdUsuario y Participaciones.NumEventos son campos resultantes de ese query.

Para que funcione en Acces solo quita al usuario propietariom es decir quita los dbo.

Saludos
  #19 (permalink)  
Antiguo 08/11/2007, 01:28
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: Ordenar registros según fechas anteriores

Cita:
Participaciones Es una consulta para obtener las participaciones de los usuarios a eventos etc....
¿Entonces debo crear una tabla o consulta física con esta nomenclatura o esta consulta es virtual? lo pregunto porque me da un error de sistaxis por falta de un operador

Syntax error (missing operator) in query expression
'U.IdUsuario = Participaciones.IdUsuario LEFT OUTER JOIN Eventos E INNER JOIN EventosUsuarios EU ON E.IdEvento ON U.IdUsuario = EU.IdUsuario'
  #20 (permalink)  
Antiguo 08/11/2007, 08:04
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Ordenar registros según fechas anteriores

No, esa consulta la hago dentro del mismo Query. Quizá algo tecleaste mal. Te dejo el query para solo copiar y pegar.

Código:
SELECT  U.IdUsuario, U.Nombre, MAX(E.Fecha) AS UltimoEvento, Participaciones.NumEventos
FROM   Usuarios U INNER JOIN
(SELECT U.Nombre, COUNT(EU.IdEvento) AS NumEventos, U.IdUsuario
                           FROM    EventosUsuario EU RIGHT OUTER JOIN
                                        Usuarios U ON EU.IdUsuario = U.IdUsuario
                            GROUP BY U.Nombre, U.IdUsuario) Participaciones 
ON U.IdUsuario = Participaciones.IdUsuario LEFT OUTER JOIN
                      Eventos E INNER JOIN
                      EventosUsuario EU ON E.IdEvento = EU.IdEvento ON U.IdUsuario = EU.IdUsuario
GROUP BY U.IdUsuario, U.Nombre, Participaciones.NumEventos
ORDER BY UltimoEvento, Participaciones.NumEventos
Access tiene casi la misma sintaxis que SQL Server, este query debiera de correr sin modificaciones. Avisas si te vuelve a marcar error.
  #21 (permalink)  
Antiguo 09/11/2007, 01:50
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: Ordenar registros según fechas anteriores

La transcribí cuidadosamente y la repasé varias veces, en cualquier caso he hecho el copy/paste con este código pero sigo con el mismo error.

Para evitar problemas añadidos he intentado ejecutar la query en access directamente, incluso he cambiado los U, E y EU por el nombre de la tabla real para ver si daba otro resultado, pero nada.
  #22 (permalink)  
Antiguo 09/11/2007, 08:26
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Ordenar registros según fechas anteriores

Access apesta!!! :-p

Para que funcione en access debes hacer 4 vistas:

Cita:
vw_EventosUsuario
SELECT u.IdUsuario, u.Nombre, eu.IdEvento
FROM Usuarios AS u LEFT JOIN EventosUsuario AS eu ON u.IdUsuario = eu.IdUsuario;
Cita:
vw_FechasEventos
SELECT vw_EventosUsuario.IdUsuario, vw_EventosUsuario.Nombre, Eventos.Fecha
FROM Eventos RIGHT JOIN vw_EventosUsuario ON Eventos.IdEvento = vw_EventosUsuario.IdEvento;
Cita:
vw_Participaciones
SELECT U.Nombre, COUNT(EU.IdEvento) AS NumEventos, U.IdUsuario
FROM EventosUsuario AS EU RIGHT JOIN Usuarios AS U ON EU.IdUsuario = U.IdUsuario
GROUP BY U.Nombre, U.IdUsuario;
Cita:
vw_Prioridades
SELECT vw_FechasEventos.IdUsuario, vw_FechasEventos.Nombre, vw_Participaciones.NumEventos, Max(vw_FechasEventos.Fecha) AS UltimoEvento
FROM vw_Participaciones LEFT JOIN vw_FechasEventos ON vw_Participaciones.IdUsuario = vw_FechasEventos.IdUsuario
GROUP BY vw_FechasEventos.IdUsuario, vw_FechasEventos.Nombre, vw_Participaciones.NumEventos
ORDER BY Max(vw_FechasEventos.Fecha), vw_Participaciones.NumEventos;
Y con eso "mas o menos funciona", vaya con el Access
  #23 (permalink)  
Antiguo 11/11/2007, 16:52
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: Ordenar registros según fechas anteriores

¿Y esto como se ejecuta, asi?:
Código:
Dim vw_EventosUsuarios
Dim vw_FechasEventos
Dim vw_Participaciones
Dim vw_Prioridades	 

vw_EventosUsuarios = "SELECT....
vw_FechasEventos = "SELECT....
etc..
set RS_Event = CreateObject("ADODB.Recordset")
RS_Event.open vw_EventosUsuarios, vw_FechasEventos, vw_Participaciones, vw_Prioridades, conn
Desde luego vaya un peñazo de Access
  #24 (permalink)  
Antiguo 12/11/2007, 06:37
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: Ordenar registros según fechas anteriores

He estado viendo algo sobre el tema y parece que se debe usar la función CREATE VIEW, pero no se como montar la consulta... estoy pez total

La penultima Myakire, que ya lo tenemos...
  #25 (permalink)  
Antiguo 12/11/2007, 08:23
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Ordenar registros según fechas anteriores

eehh, mmmm

Supongo sabes hacer consultas en vista SQL en access? ¿o no? Create View es para cuando quieres hacer vistas en tiempo de ejecución.

Haces las consultas en access y en ASP solo haces un SELECT normalito a la "tabla" (en realidad es una consulta/vista) "vw_Prioridades".
  #26 (permalink)  
Antiguo 12/11/2007, 16:37
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Busqueda Re: Ordenar registros según fechas anteriores

Ahora si... he montado esas consultas, pero la query no me sale por más conbinaciones que haga
No los ordena como debiera
Código:
SQL=" SELECT TOP 12 vw_EventosUsuarios.IdUsuario, vw_Prioridades.Nombre,  vw_Prioridades.UltimoEvento"&_
" FROM vw_EventosUsuariosINNER JOIN vw_Prioridades ON vw_EventosUsuarios.IdUsuario=vw_Prioridades.IdUsuario"&_
" WHERE IdEvento="&IdEvento&" AND UltimoEvento < "&Fech&" ORDER BY UltimoEvento, NumEventos DESC"
Las fechas en las que se van a realizar eventos y ya están programados los toma en consideración y no solo las fechas anteriores a la consulta, esto ocasiona que se modifique el orden de las listas anteriores al incluir usuarios en esos eventos.
Cita:
Esta parte no funciona muy bien me temo:
UltimoEvento < "&Fech&"

Última edición por Uefor; 13/11/2007 a las 05:36 Razón: Aclaración
  #27 (permalink)  
Antiguo 13/11/2007, 08:50
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Ordenar registros según fechas anteriores

Por eso te comenté que con access "mas o menos funciona", tiene algunas diferencias en resultados contra Sql Server, no me he puesto a investigar el por qué.

Cita:
Las fechas en las que se van a realizar eventos y ya están programados los toma en consideración y no solo las fechas anteriores a la consulta, esto ocasiona que se modifique el orden de las listas anteriores al incluir usuarios en esos eventos.
Esto no lo entendí muy bien, ¿podrías poner algún ejemplo?, así como lo pusiste en el post 10 con fechas de eventos y usuarios.
  #28 (permalink)  
Antiguo 13/11/2007, 16:00
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
Información Re: Ordenar registros según fechas anteriores

Por supuesto...
Digamos que tenemos estos eventos y sus fechas:
101 > 20-09-2007
102 > 20-10-2007
103 > 20-11-2007
104 > 20-12-2007

y nuestros famosos amigos... Pepe, Juan y Pedro y la fecha actual sería la de hoy... 13-11-2007

En el caso de que 104 no existiera, las listas quedarían así:
101 > 1º)Pepe, 2º)Juan
102 > 1º)Pedro, 2º)Juan
103 > 1º)Pepe, 2º)Juan

Juan siempre está el último por estar en todos los eventos y supongo que se aplica el orden de NumEventos ante UltimoEvento

Pero al crear la 104, en todas las listas cambia el orden de asistentes:
101 > 1º)Juan, 2º)Pepe
102 > 1º)Juan, 2º)Pedro
103 > 1º)Juan, 2º)Pepe
104 > 1º)Pedro, 2º)Pepe

Pepe y Pedro al estar en el evento que se hará en último lugar (104) dentro de un més, pierden la prioridad en todos los eventos de la tabla al tener la fecha max más alta, tanto en 103 que es el próximo inmediato como en 102 y 101 y además entre ellos se aplica el criterio NumEventos.

Tal y como está, un usuario ser incluido en 6 eventos de fechas futuras y quedarse fuera del evento de hoy porque le contabilizan todos los eventos (incluso los futuros), tanto por número a los que supuestamente ha asistido, como por fecha max del último evento y sin embargo no haber ido a ninguno aun.

En el caso contrario puede haber una persona que haya ido al de ayer y además tener priorida sobre el otro usuario en el de hoy cuando debería ser al contrario.


SaLu2

Última edición por Uefor; 14/11/2007 a las 01:58 Razón: Correción...
  #29 (permalink)  
Antiguo 15/11/2007, 10:04
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Ordenar registros según fechas anteriores

Cita:
Tal y como está, un usuario ser incluido en 6 eventos de fechas futuras y quedarse fuera del evento de hoy porque le contabilizan todos los eventos (incluso los futuros), tanto por número a los que supuestamente ha asistido, como por fecha max del último evento y sin embargo no haber ido a ninguno aun.
Sigo insistiendo que esas reglas estan medio raras, pero efectivamente así como esta te contabiliza los efectos futuros, para que no lo hiciera deberías de modificar la vista vw_Participaciones para Agregar la tabla Eventos y validar la fecha. Algo como esto:

Código:
SELECT     U.Nombre, COUNT(EU.IdEvento) AS NumEventos, U.IdUsuario
FROM         dbo.EventosUsuario EU INNER JOIN
                      dbo.Eventos E ON EU.IdEvento = E.IdEvento RIGHT OUTER JOIN
                      dbo.Usuarios U ON EU.IdUsuario = U.IdUsuario
WHERE     (E.Fecha <= GETDATE())
GROUP BY U.Nombre, U.IdUsuario, E.Fecha
Yo no tengo Access (para las vistas que te puse antes tuve que pedirle la pc a una amiga ), así que en SQL Server es GETDATE() la función que regresa la fecha del servidor, supongo que en Access es solo Date.

ya no estoy tan seguro que con una solo consulta salga, pero hasta este momento creo que si
  #30 (permalink)  
Antiguo 16/11/2007, 01:50
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 9 meses
Puntos: 0
De acuerdo Re: Ordenar registros según fechas anteriores

Ok, veré si le saco punta a esa consulta aunque ya intenté filtrarlas en la consulta vw_FechasEventos y los resultados no los entendía muy bien, pero no eran los esperados.

SaLu2 y muchas gracias por el interés que estás mostrando Myakire.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:37.