2013-04-30 29 views
5

Mam dwie kolumny w bazie danych mysql, które chciałbym policzyć, ile razy jedna nazwa pojawia się w obu kolumnach. Funkcja COUNT sama dla mnie nie działa, ponieważ liczy tylko sumę w jednej kolumnie.SQL zlicza ile razy wartość pojawia się w wielu kolumnach?

MySql Kolumny:

+-----------------+--------------+ 
| Member1   | Member2  | 
+-----------------+--------------+ 
| John   | Bill   | 
| Bill   | John   | 
| Joe    | John   | 
| Bill   | Joe   | 
| John   | Steve  | 
+-----------------+--------------+ 

Pożądany wyjściowa:

+-----------------+--------------+ 
| Member   |  Total | 
+-----------------+--------------+ 
| John   | 4   | 
| Bill   | 3   | 
| Joe    | 2   | 
| Steve   | 1   | 
+-----------------+--------------+ 

Jakieś pomysły ?? Dzięki!

+1

możliwy duplikat [SQL, policz w wielu kolumnach, a następnie grupuj według] (http://stackoverflow.com/questions/12354207/sql-count-in-multiple-columns-then-group-by) –

Odpowiedz

10

Możesz użyć poniższych, które będą rozpakowywać wiele kolumn członków w jedną kolumnę przy użyciu UNION ALL. Raz to jest w jednej kolumnie, a następnie można zastosować łączną funkcję count:

select member, count(*) Total 
from 
(
    select member1 as member 
    from yt 
    union all 
    select member2 
    from yt 
) d 
group by member 
order by total desc; 

Zobacz SQL Fiddle with Demo

0

Jeśli pojedyncza nazwa pojawia się w 1 kolumnie 2 razy więcej, powyżej wyniku sql będzie źle. Wypróbuj za pomocą "wyraźnego" polecenia w podzapytaniu.

Powiązane problemy