Ver Mensaje Individual
  #8 (permalink)  
Antiguo 20/09/2012, 10:37
Avatar de Lalounam
Lalounam
 
Fecha de Ingreso: mayo-2012
Ubicación: México D.F.
Mensajes: 59
Antigüedad: 12 años
Puntos: 19
Respuesta: Registros uncios Mysql

Si, me faltaba el caso mas difícil, pero lo HE CONSEGUIDO, explico:

Obtener la lista de aquellos con los que has tenido algún mensaje implica una repetición en el caso en que te escribieron y contestaste, así:

Remitente Destinatario
---------------------------------
Lalo Juan
Juan Lalo

ya que si preguntamos dame todos los mensajes de los que sea remitente pero sin repetir destinatarios:

(SELECT destinatario FROM Mensajes where remitente='Lalo' group by destinatario)

y al revez, de los que se a destinatario pero sin repetir remitente:

(SELECT remitente FROM Mensajes where destinatario='Lalo' group by remitente)

lo que nos da dos consultas correctas, pero seguimos con la repetición si se da el caso de que un elemento esté en ambas listas, juntando ambas consultas podemos obtener esto:

select destinatario,remitente from Mensajes where remitente='Lalo' or destinatario='Lalo' group by destinatario,remitente

resultando:

destinatario remitente
-----------------------------------
Juan Lalo
Lalo Juan
Lalo Miguel

Aquí se ve la repetición de la que se habla, pues para evitarla solo hay que notar que Juan es destinatario y remitente, pues evitemos que sea una de las dos y listo:

select destinatario,remitente from Mensajes where (remitente='Lalo' or destinatario='Lalo') and (remitente not in (SELECT destinatario FROM Mensajes where remitente='Lalo')) group by destinatario,remitente

dando como resultado:

destinatario remitente
-----------------------------------
Juan Lalo
Lalo Miguel

LISTO!!!

Una cosa importante, NO ES LA SOLUCIÓN MÁS EFICIENTE lo sé, pero es un caso raro en el que se trata de evitar la repetición en columnas diferentes.

Espero te sirva, saludos.