Club Delphi  
    Paypal   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 25-04-2008
MRang14 MRang14 is offline
Miembro
 
Registrado: mar 2004
Ubicación: Tijuana, Mexico
Posts: 10
Poder: 0
MRang14 Va por buen camino
Muchas gracias Contraveneno

por tu ayuda....
Responder Con Cita
  #2  
Antiguo 05-05-2008
Uefor Uefor is offline
Registrado
 
Registrado: may 2008
Posts: 5
Poder: 0
Uefor Va por buen camino
Exclamation

Yo tengo un problema similar a este, pero no doy con la tecla...
Son varias las tablas y quiero ordenar los usuarios dependiendo de si han asistido ya o no a otros eventos

Esta sería la estructura de las tablas:
Tabla1 (usuarios incluidos)
Id
IdUsuario
Idevento
Fechacontrol

Tabla2
Idevento
Fecha
Hora
Lugar
etc

Tabla3
Idusuario
Nombre
Apellidos
etc

Lo que quiero es mostrar en último lugar a los usuarios que asistieron al último evento (el más reciente) y así dar preferencia a los que llevan más tiempo sin asistir.
Actualmente el orden que uso es el de la fechacontrol porque no se como ordenar rescatando las fechas de eventos anteriores respecto del que se seleccione, no estoy seguro de haberme explicado bien.

Última edición por Uefor fecha: 05-05-2008 a las 21:16:35. Razón: Aclaración
Responder Con Cita
  #3  
Antiguo 06-05-2008
tonyskl tonyskl is offline
Miembro
 
Registrado: oct 2007
Posts: 18
Poder: 0
tonyskl Va por buen camino
Lightbulb

Cita:
Empezado por Uefor Ver Mensaje
...

Esta sería la estructura de las tablas:
Tabla1 (usuarios incluidos)
Id
IdUsuario
Idevento
Fechacontrol

Tabla2
Idevento
Fecha
Hora
Lugar
etc

Tabla3
Idusuario
Nombre
Apellidos
etc

Lo que quiero es mostrar en último lugar a los usuarios que asistieron al último evento (el más reciente) y así dar preferencia a los que llevan más tiempo sin asistir.
Actualmente el orden que uso es el de la fechacontrol porque no se como ordenar rescatando las fechas de eventos anteriores respecto del que se seleccione, no estoy seguro de haberme explicado bien.
Mi propuesta...

Código SQL [-]
select t3.Nombre, MAX(t2.fecha) 
  from tabla1 t1, tabla2 t2, tabla3 t3
 where t1.dEvento = t2.IdEvento
   and t1.idUsuario = t3.IdUsuario
group by t3.Nombre    
order by t2.fecha

Algo así seria...

Ya me comentaras... Saludos!
Responder Con Cita
  #4  
Antiguo 06-05-2008
Uefor Uefor is offline
Registrado
 
Registrado: may 2008
Posts: 5
Poder: 0
Uefor Va por buen camino
Gracias tonyskl,
Lo que tengo actualmente se parece bastenta a esa sentencia, el problema se plantea con la fecha máxima que rescata esa consulta precisamente.

Actualmente puedo consultar una lista de un evento para hoy y tener ya en la db usuarios incluidos para otro evento que se realizará mañana o pasado, al recoger la fecha máxima me tira a la cola usuarios que ya están apuntados para mañana, el objetivo es que pierdan preferencia los que fueron ayer o antes de ayer etc... nos los que iran a eventos futuros.

Ese es dilema realmente...
SaLu2

Última edición por Uefor fecha: 06-05-2008 a las 14:42:28. Razón: Errata
Responder Con Cita
  #5  
Antiguo 06-05-2008
tonyskl tonyskl is offline
Miembro
 
Registrado: oct 2007
Posts: 18
Poder: 0
tonyskl Va por buen camino
Lightbulb

Cita:
Empezado por Uefor Ver Mensaje
Gracias tonyskl,
Lo que tengo actualmente se parece bastenta a esa sentencia, el problema se plantea con la fecha máxima que rescata esa consulta precisamente.

Actualmente puedo consultar una lista de un evento para hoy y tener ya en la db usuarios incluidos para otro evento que se realizará mañana o pasado, al recoger la fecha máxima me tira a la cola usuarios que ya están apuntados para mañana, el objetivo es que pierdan preferencia los que fueron ayer o antes de ayer etc... nos los que iran a eventos futuros.

Ese es dilema realmente...
SaLu2
Ok simplemente añade entonces en la clausula where que la fecha del evento sea menor al current_date o current_date - 1 o current_date + 1... eso ya lo que te convenga...

Código SQL [-]
select t3.Nombre, MAX(t2.fecha) 
  from tabla1 t1, tabla2 t2, tabla3 t3
 where t1.dEvento = t2.IdEvento
   and t1.idUsuario = t3.IdUsuario
   and t2.fecha < current_date
group by t3.Nombre    
order by t2.fecha

Saludos!!!
Responder Con Cita
  #6  
Antiguo 07-05-2008
Uefor Uefor is offline
Registrado
 
Registrado: may 2008
Posts: 5
Poder: 0
Uefor Va por buen camino
Lightbulb

No me sirve tampoco... pero estoy dandole vueltas a otra solución, he decidido incluir la fecha del ultimo evento al que asistió al mismo tiempo que se apunta al nuevo evento, de este modo con un sencillo "ORDER BY Fecha" resuelto.

El problema es este ahora: necesito ingresar en un INSERT la fecha del último evento al que asistió el usuario para establecer el orden de preferencias en el que se está apuntando, pero si el usuario no ha asistido a ningún evento me da un error porque no existe en la tabla.
Cita:
"SELECT TOP 1 * FROM tabla WHERE (Fecha < #"&FechaEvento&"# OR Fecha IS NULL) AND (Usuario="&Usuario&" OR Usuario IS NULL) ORDER BY Fecha DESC"
¿que tengo mal hecho en la consulta?...

Las variables de ASP funcionan bien, esta misma consulta sin los "OR Fecha IS NULL" etc.. funciona bien con usuarios que ya están en la tabla.
SaLu2
Responder Con Cita
  #7  
Antiguo 07-05-2008
tonyskl tonyskl is offline
Miembro
 
Registrado: oct 2007
Posts: 18
Poder: 0
tonyskl Va por buen camino
Smile

Cita:
Empezado por Uefor Ver Mensaje
No me sirve tampoco... pero estoy dandole vueltas a otra solución, he decidido incluir la fecha del ultimo evento al que asistió al mismo tiempo que se apunta al nuevo evento, de este modo con un sencillo "ORDER BY Fecha" resuelto.

El problema es este ahora: necesito ingresar en un INSERT la fecha del último evento al que asistió el usuario para establecer el orden de preferencias en el que se está apuntando, pero si el usuario no ha asistido a ningún evento me da un error porque no existe en la tabla.
¿que tengo mal hecho en la consulta?...

Las variables de ASP funcionan bien, esta misma consulta sin los "OR Fecha IS NULL" etc.. funciona bien con usuarios que ya están en la tabla.
SaLu2
Si el usuario no existe en la tabla te devolvera null, eso es lógico.
No se exactamente que ves mal en la query...

Simplemente el nuevo campo que has dado de alta debes decirle que puede ser null, ya que pueden existir usuarios que no hayan asistido a ningún evento.

¿Por que no te sirve la última query que te propuse?

Saludos!!
Responder Con Cita
  #8  
Antiguo 05-05-2008
Uefor Uefor is offline
Registrado
 
Registrado: may 2008
Posts: 5
Poder: 0
Uefor Va por buen camino
Exclamation

.................

Última edición por Uefor fecha: 05-05-2008 a las 21:07:59. Razón: Duplicado
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
obtener el ultimo registro resultado de una comparacion Gaim2205 Varios 2 11-09-2007 18:27:40
como obtener valor del ultimo registro. Gaim2205 Varios 4 10-09-2007 22:02:17
como obtener el ultimo registro gustavoh .NET 2 17-07-2006 14:29:07
Obtener el último registro insertado mutant09 SQL 3 04-05-2004 20:59:21
Obtener el último registro juanchi Conexión con bases de datos 2 06-02-2004 01:52:21


La franja horaria es GMT +2. Ahora son las 09:31:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi