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

Select 2 campos a or b sin repetir

Estas en el tema de Select 2 campos a or b sin repetir en el foro de Mysql en Foros del Web. Hola que tal, Saludos para todos, consulto por aca ya que llevo un dia entero sin conseguir la solucion correcta como la requiero, porque las ...
  #1 (permalink)  
Antiguo 10/03/2014, 03:38
Avatar de JoseAlejandro_Realza  
Fecha de Ingreso: agosto-2008
Ubicación: Maracay - Venezuela
Mensajes: 192
Antigüedad: 15 años, 8 meses
Puntos: 2
Select 2 campos a or b sin repetir

Hola que tal, Saludos para todos, consulto por aca ya que llevo un dia entero sin conseguir la solucion correcta como la requiero, porque las diferentes formas que he hecho, siempre tiene una falla.

En un sistema, he desarrollado un modulo de mensajes privado entre usuarios, donde uno le puede escribir al otro y este responderle. Logro mostrar la conversacion entre ambos usuarios. Hasta aqui todo bien. El asunto se complica cuando en la pagina principal de los mensajes, quiero listarlos de la siquiente manera.

Necesito que la busqueda seleccione el id de un usuario sea este emisor o receptor, pero que solo me muestre un resultado por cada conversacion. Por tanto que me muestre solo el ultimo mensaje por cada conversacion, ya sea el emisor o receptor. No se si aqui fui lo suficientemente claro, pero el asunto quedaria algo como: Select emiter = id or receiver = id group by emiter,receiver

Código SQL:
Ver original
  1. SELECT * FROM messages_private WHERE emiter = 2 OR receiver = 2 GROUP BY emiter,receiver ORDER BY created_at DESC

El problema de esa sentencia, es que me va a devolver 4 registros en vez de 2. Por ejemplo,
Código HTML:
-- emiter ---   receiver--
      1             2
      2             1
      1             3
      3             1
Espero puedan ayudarme con esta sentencia que no consigo resolver. Muchas gracias
__________________
Tu Guía Empresarial http://www.empresarial.org.ve Soluciones Empresariales

Atte: José Alejandro Realza
  #2 (permalink)  
Antiguo 10/03/2014, 09:34
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Select 2 campos a or b sin repetir

Hola JoseAlejandro_Realza:

No nos dices cuál es la estructura completa de tu tabla, pero me pregunto, ¿cómo sabes en realidad cuál de los cuatro mensajes que muestras es el último? ¿de casualidad manejas algún otro dato además del id del emisor/receptor que te pueda servir para determinar cuál es el último mensaje de la conversación??? no sé, una fecha un id autoincremental... cualquier otra cosas... (podría pensar que el campo created_at es una fecha, pero no soy adivino...

Si es así la cosas, en realidad estás haciendo cosas de más... basta con que hagas algo como esto:

Código MySQL:
Ver original
  1. FROM messages_private
  2. WHERE emiter = 2 OR receiver = 2
  3. ORDER BY created_at DESC

Si esto no te funciona postea al estructura de tu tabla, pon algunos datos de ejemplo y dinos qué es lo que esperas obtener como salida a partir de esos datos de ejemplo.

Saludos
Leo.
  #3 (permalink)  
Antiguo 11/03/2014, 03:12
Avatar de JoseAlejandro_Realza  
Fecha de Ingreso: agosto-2008
Ubicación: Maracay - Venezuela
Mensajes: 192
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Select 2 campos a or b sin repetir

Gracias por responder leonardo_josue. Si, en efecto, created_at es la fecha en la que fue registrado dicho mensaje. Si le coloco limit 1, entonces solo me mostrara un resultado por todos, y no es lo que busco. La idea es que muestre uno pero por cada conversacion, de modo que si un usuario ha intercambiado mensajes con 4 usuarios, le muestre el ultimo de cada una de esas conversaciones, ya sea que el lo haya enviado o recibido.

Mi estructura es de la siguiente forma:

id
emiter
receiver
message
view
emiter_deleted
receiver_deleted
create_at

La idea es mostrarlos tal cual como lo hace facebook.com/messages/
__________________
Tu Guía Empresarial http://www.empresarial.org.ve Soluciones Empresariales

Atte: José Alejandro Realza

Etiquetas: campos, select, sentencia
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 15:58.