2013-04-30 6 views
5

Ich habe zwei Spalten in einer MySQL-Datenbank, die ich zählen möchte, wie oft ein einzelner Name in beiden Spalten erscheint. Die Funktion COUNT funktioniert für mich nicht, da sie nur die Summe in einer Spalte zählt.SQL-Anzahl, wie oft ein Wert in mehreren Spalten angezeigt wird?

MySql Spalten:

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

gewünschte Ausgabe:

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

Irgendwelche Ideen ?? Vielen Dank!

+1

möglich duplizieren von [SQL, zähle in mehreren Spalten und gruppiere dann] (http://stackoverflow.com/questions/12354207/sql-count-in-multiple-columns-then-group-by) –

Antwort

10

Sie können die folgenden verwenden, die Ihre mehreren Spalten von Mitgliedern in eine einzelne Spalte mithilfe einer deaktivieren. Sobald es in der Einzelsäule ist, dann können Sie die Aggregatfunktion anwenden 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; 

Siehe SQL Fiddle with Demo

0

Wenn ein einzelner Name in 1 Spalten 2 Mal erscheint und mehr, werden über SQL-Ergebnis falsch sein. Versuchen Sie es mit "distinct" Anweisung in der Unterabfrage.

Verwandte Themen