2013-06-28 4 views
5

ho una tabella chiamata e-mail con tre colonne dire id, emailfrom, emailToConte più alto non di conversazione tra due clienti

 
-------------------------------------------------- 
| id | emailFrom  | EmailT0    | 
-------------------------------------------------- 
| 1 | A    | B      | 
-------------------------------------------------- 
| 2 | B    | A      | 
-------------------------------------------------- 
| 3 | A    | B      | 
-------------------------------------------------- 
| 4 | C    | A      | 
-------------------------------------------------- 
| 5 | B    | C      | 
-------------------------------------------------- 
| 6 | A    | C      | 
-------------------------------------------------- 
| 7 | A    | B      | 
-------------------------------------------------- 

ora la mia domanda è, come scoprire la più alta conversazione tra due client

cioè a inviare una mail a B e B inviare posta ad un, significa che hanno conversazione di conteggio 2. ora,
voglio trovare ciò che gli utenti hanno inviare maggior parte dei email a vicenda

risposta

5

Questo restituirà gli utenti che hanno inviato maggior parte dei email gli uni agli altri:

SELECT 
    LEAST(emailFrom, emailTo) email1, 
    GREATEST(emailFrom, emailTo) email2, 
    COUNT(*) 
FROM 
    yourtable 
GROUP BY 
    LEAST(emailFrom, emailTo), 
    GREATEST(emailFrom, emailTo) 
ORDER BY 
    COUNT(*) DESC 
LIMIT 1 

Vedere violino here.

+0

Grazie per il vostro aiuto, in realtà risolto il mio problema – user2531799

+0

@ user2531799 sei il benvenuto :) tu non devi, ma i pls non dimenticano di accettare la risposta se desiderate ... http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work tnx! – fthiella

0

A COUNT semplice (*) con un GROUP BY lo faranno:

select emailFrom, emailTo, count(*) as conversation_count 
from email 
group by emailFrom, emailTo; 
+0

Ciò conterebbe solo le email che vanno in una direzione, non in entrambe le direzioni. – Tom

+0

Ah ho letto male che è bidirezionale, @fthiella ha risposto in tal caso;) – Timmetje

+0

Questo non ti dirà cosa viene chiesto, ho già provato questa query e solo dopo questo ho postato la mia domanda qui, la query sopra farà il trucco ... – user2531799