J'ai écrit un script qui s'exécute chaque fois qu'un utilisateur se connecte à un ordinateur de notre domaine. Ce script enregistre l'utilisateur et l'ordinateur auquel il s'est connecté. Un nombre illimité d'utilisateurs peuvent se connecter à un nombre illimité d'ordinateurs.
Je viens d'hériter de cet environnement informatique d'un consultant qui n'est plus dans le coin et j'écris cette petite requête afin que, lorsqu'un utilisateur m'appelle, je puisse effectuer une recherche par nom d'utilisateur et prévoir de manière raisonnable quel ordinateur il utilise. nombre de fois où ils se sont connectés à un ordinateur donné.
Voici un exemple des données de la table 'login':
COMPUTER USER
ncofp02 lee
ncofp02 lee
ncofp02 andy
ncodc01 andy
ncodc01 andy
ncodc01 lee
Ce qui me frappe le plus, c'est la logique de compter des valeurs distinctes sur plusieurs colonnes. J'aimerais voir un résultat comme celui-ci:
COMPUTER USER COUNT
ncofp02 lee (2)
ncofp02 andy (1)
ncodc01 lee (1)
ncodc01 andy (2)
Est-il possible d'accomplir cela avec une requête unique dans mysql, ou devrais-je commencer à mettre en boucle du php? (booooo!)
Il suffit de lister plusieurs colonnes dans la clause GROUP BY
.
SELECT computer, user, count(*) AS count
FROM login
GROUP BY computer, user
Essaye ça:
SELECT l.computer, l.user, COUNT(DISTINCT l.computer, l.user) AS count
FROM login l
GROUP BY l.computer, l.user
Facile!
SELECT
computer, user, COUNT(DISTINCT computer, user) AS count
FROM
login