
19/09/2012, 15:34
|
Colaborador | | Fecha de Ingreso: marzo-2008 Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 17 años Puntos: 300 | |
Respuesta: Registros uncios Mysql HyQnet,
borré mi anterior respuesta, porque creí que lo tenías solucionado y pensé no haberte entendido. Todavía no las tengo todas conmigo. Verás, no entiendo bien qué consideras tú conversación. No existe un identificador de conversación y resultará imposible definirla. Una conversación podría durar horas entre dos días; y si cambia el tema y crean otra conversación esas dos mismas personas, ¿sería la misma? En fin, que si lo que quieres es sacar intervenciones únicas de dos interlocutores, parejas únicas, sin que se repitan los interlocutores, yo ideé esto que te escribo debajo, pero no olvidéis que soy un hombre de letras, de modo que nadie se ría de mí en estos foros técnicos, no es más que una ocurrencia. Creé un campo de control según el cual sumo los id de remitente y destinatario, y a eso le sumo el producto de ambos. En los casos de reverso, es decir, cuando remitente y destinatario se intercambian, el valor será el mismo. Primero agrupo por ese número de control tras traerme aquellos registros en que los interlocutores son los mismos, y dejo uno solo; luego mediante UNION le uno los demás, es decir, aquellos cuya suma agrupada de ese control es 1 y solo 1. Y así me salen todos, sin repetición, aunque claro, en dos columnas distintas...
(
SELECT T1.id, T1.id_remitente, T1.id_destinatario, (
T1.id_remitente + T1.id_destinatario + ( T1.id_remitente * T1.id_destinatario )
)control
FROM `tabla1` T2
INNER JOIN tabla1 T1 ON ( T1.id_remitente = T2.id_destinatario
AND T1.id_destinatario = T2.id_remitente )
GROUP BY control
)
UNION ALL (
SELECT T1.id, T1.id_remitente, T1.id_destinatario, (
T1.id_remitente + T1.id_destinatario + ( T1.id_remitente * T1.id_destinatario )
)control
FROM `tabla1` T1
GROUP BY control
HAVING COUNT( * ) =1
)
Última edición por jurena; 19/09/2012 a las 15:59 |