it-swarm.com.de

MySQL zählt verschiedene Werte für mehrere Spalten

Ich habe ein Skript geschrieben, das jedes Mal ausgeführt wird, wenn sich ein Benutzer bei einem Computer in unserer Domäne anmeldet. Dieses Skript zeichnet den Benutzer sowie den Computer auf, bei dem er sich angemeldet hat. Eine beliebige Anzahl von Benutzern kann sich an einer beliebigen Anzahl von Computern anmelden. 

Ich habe diese IT-Umgebung gerade von einem Berater geerbt, der nicht mehr in der Nähe ist, und ich schreibe diese kleine Abfrage. Wenn ich einen Anruf von einem Benutzer erhalte, kann ich nach dessen Namen suchen und vernünftigerweise vorhersagen, welchen Computer er verwendet wie oft sie sich an einem bestimmten Computer angemeldet haben.

Hier ist ein Beispiel der Daten in der 'login' Tabelle:

    COMPUTER        USER
    ncofp02         lee
    ncofp02         lee
    ncofp02         andy
    ncodc01         andy
    ncodc01         andy
    ncodc01         lee

Was mir am Kopf liegt, ist die Logik, verschiedene Werte über mehrere Spalten hinweg zu zählen. Ich möchte ein Ergebnis wie dieses sehen:

    COMPUTER       USER   COUNT
    ncofp02        lee    (2)
    ncofp02        andy   (1)
    ncodc01        lee    (1)
    ncodc01        andy   (2)

Gibt es eine Möglichkeit, dies mit einer einzigen Abfrage innerhalb von mysql zu erreichen, oder sollte ich anfangen, einige PHP zu schleifen? (booooo!)

22
user3140879

Listen Sie einfach mehrere Spalten in der GROUP BY-Klausel auf.

SELECT computer, user, count(*) AS count
FROM login
GROUP BY computer, user
45
Barmar

Versuche dies: 

SELECT l.computer, l.user, COUNT(DISTINCT l.computer, l.user) AS count
FROM login l 
GROUP BY l.computer, l.user
6
Saharsh Shah

Einfach!

SELECT 
    computer, user, COUNT(DISTINCT computer, user) AS count
FROM 
    login 
0
Snaver