Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] No puedo crear una Consulta para traer ultimo mensajes

Estas en el tema de No puedo crear una Consulta para traer ultimo mensajes en el foro de SQL Server en Foros del Web. Tengo una aplicacion en la que necesito mostrar los mensajes tipo inbox de facebook. Tengo una tabla de mensajes en donde se guardan las conversaciones,pero ...
  #1 (permalink)  
Antiguo 25/04/2013, 01:35
 
Fecha de Ingreso: diciembre-2010
Ubicación: victoria
Mensajes: 24
Antigüedad: 13 años, 4 meses
Puntos: 0
No puedo crear una Consulta para traer ultimo mensajes

Tengo una aplicacion en la que necesito mostrar los mensajes tipo inbox de facebook. Tengo una tabla de mensajes en donde se guardan las conversaciones,pero no se si las este guardando de la manera mas adecuada.



esa es la manera en que tengo guardadas 2 conversaciones, como pueden ver encerradas en cuadros de diferentes colores...

lo que necesito es mostrar solo el ultimo mensaje de cada conversación.



de esa manera, para que en la aplicacion solo se muestre el ultimo mensaje de cada platica. asi como en la siguiente imagen:



La idea es que se vea de esa manera.. la imagen solo fue manipulada, para mostrar el resultado que quiero llegar a tener... espero y me puedan echar una mano, ya que no soy bueno para las bases de datos...

gracias de antemano...
  #2 (permalink)  
Antiguo 25/04/2013, 03:17
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No puedo crear una Consulta para traer ultimo mensajes

Tu tabla no tiene forma de determinar cuál es la conversación en forma simple... Sólo cuál es el último mensaje de cada uno, ergo, debes agrupar por origen y destino al mismo tiempo.
Pero eso sólo servirá si buscas las respuestas de un mismo emisor o hacia un mismo receptor.
Deberías considerar poner un identificador de conversación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/04/2013, 10:19
 
Fecha de Ingreso: diciembre-2010
Ubicación: victoria
Mensajes: 24
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: No puedo crear una Consulta para traer ultimo mensajes

Y debería crear otra tabla ?? o agregar nuevos campos a la que ya tengo.. Te agradecería me orientaras un poco mas, ya que las bases de datos no son lo mio...

gracias por responder... Un saludo.
  #4 (permalink)  
Antiguo 25/04/2013, 10:28
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: No puedo crear una Consulta para traer ultimo mensajes

a lo que se refiere el compañero es que ademas tengas un id_conversation en tu tabla quedando de esta manera:

id, id_conversation, source, tarjet, title, message
1 1 333 999 hola hola como estas
2 1 999 333 hola bien bien y tu
3 1 333 999 hola bien tambien
4 2 444 555 hey how are you
5 2 555 444 hey fine and you?

con este esquema podrias saber que la ultima respuesta a la conversacion 1 es el id 3 y la de la conversacion 2 es el id 5 :) y si lo quieres por source pues tambien lo puedes obtener ;)

espero haberme explicado bien porque lo mio lo mio no es la catedra ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 25/04/2013, 10:45
 
Fecha de Ingreso: diciembre-2010
Ubicación: victoria
Mensajes: 24
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: No puedo crear una Consulta para traer ultimo mensajes

Ya le puse un id a la conversación, ahora como obtendría el ultimo mensaje de cada conversación ?? disculpen las molestias, pero siento que me estoy ahogando en un vaso de agua, ya se me cerro el cerebro XD

  #6 (permalink)  
Antiguo 25/04/2013, 10:55
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: No puedo crear una Consulta para traer ultimo mensajes

usando el ejemplo que te di saldria algo como esto:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id INT,
  4. id_conver INT,
  5. SOURCE INT,
  6. target INT,
  7. title VARCHAR(20),
  8. message VARCHAR(20)
  9. )
  10.  
  11.  
  12. INSERT INTO #temp VALUES (1,1,333,999,'hola','hola como estas')
  13. INSERT INTO #temp VALUES (2,1,999,333,'hola','bien bien y tu')
  14. INSERT INTO #temp VALUES (3,1,333,999,'hola','bien tambien')
  15. INSERT INTO #temp VALUES (4,2,444,555,'hey','how are you')
  16. INSERT INTO #temp VALUES (5,2,555,444,'hey','fine and you?')
  17. INSERT INTO #temp VALUES (6,1,999,333,'hola','me da gusto')
  18.  
  19.  
  20. SELECT title,message,SOURCE FROM #temp WHERE id IN (
  21. SELECT MAX(id) FROM #temp GROUP BY SOURCE,id_conver) ORDER BY id_conver ASC
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 25/04/2013, 11:23
 
Fecha de Ingreso: diciembre-2010
Ubicación: victoria
Mensajes: 24
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: No puedo crear una Consulta para traer ultimo mensajes

gracias (Libras) por tomar parte de tu tiempo en ayudarme... Lo que me has explicado a sido de mucha ayuda, pero aun no obtengo el resultado esperado, espero y me puedas ayudar un poco mas,,, si es necesario crear otra table no hay problema.. MUCHAS GRACIAS LIBRAS.!

  #8 (permalink)  
Antiguo 25/04/2013, 11:30
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: No puedo crear una Consulta para traer ultimo mensajes

a bueno si ocupas la ultima de cada conversacion nada mas hacemos:

Código SQL:
Ver original
  1. SELECT title,message,SOURCE FROM #temp WHERE id IN (
  2. SELECT MAX(id) FROM #temp GROUP BY id_conver) ORDER BY id_conver ASC

aclaro...la tabla temporal es porque no tengo la tabla que tu usas es solo para fines "didacticos" :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 25/04/2013, 12:05
 
Fecha de Ingreso: diciembre-2010
Ubicación: victoria
Mensajes: 24
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: No puedo crear una Consulta para traer ultimo mensajes

Listo.!!! Muchas gracias LIBRAS... quedo perfecta la consulta, ya la implemente en el sistema.. y hace justo lo que necesitaba...


no se como agradecerte...
te dejo mi Fb para tener mas amigos

UN saludo..!!

Cita:
Editado: Violacion General a las Políticas de Uso 2.1, 2.2 y 2.3

Última edición por gnzsoloyo; 25/04/2013 a las 12:49 Razón: Violacion General a las Políticas de Uso 2.1, 2.2 y 2.3

Etiquetas: mensaje, procedimiento_almacenado, query, sql, tabla
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 07:24.