Plusieurs count

Eléphant du PHP | 59 Messages

31 déc. 2010, 10:20

Bonjour,
J'ai la table logs suivante :
idLog userLogin userAgent userService userProfile actionStatus actionSall

Je souhaite formater les résultats suivants :
____________________________________________________________________________________________
userLogin|userService|actionSall |Total (requete actionSall = X)|Total (requete actionSall = Y)|

et de les grouper par login (userLogin) et service (userService)

J'essaie avec la requête suivante :

Code : Tout sélectionner

( SELECT userLogin, userService, actionSall, COUNT( * ) AS TotalX FROM `log` WHERE actionSall = 'X' GROUP BY userLogin, userService ) UNION ( SELECT userLogin, userService, actionSall, COUNT( * ) AS TotalY FROM `log` WHERE actionSall = 'Y' GROUP BY userLogin, userService )
et j'obtiens le résultat suivant :
userLogin | userService | actionSall | TotalVoipDebug
dont actionSall = X et Y mais pas en colonne comme je le souhaitais.

Ca fait qqes jours que je galère si qqn avait une astuce ou une idée ca serait top

Je vous remercie par avance.

ViPHP
xTG
ViPHP | 7331 Messages

31 déc. 2010, 10:31

Ce n'est pas une union mais des sous-requêtes qu'il te faut. :)
(
SELECT userLogin, userService, actionSall, (SELECT COUNT( * ) FROM `log` WHERE actionSall = 'X' GROUP BY userLogin, userService) AS TotalX, (SELECT COUNT( * ) FROM `log` WHERE actionSall = 'Y' GROUP BY userLogin, userService) AS TotalY
FROM `log`
)
Essayes ceci, je n'ai aucunement testé cependant. :)

Eléphant du PHP | 59 Messages

31 déc. 2010, 11:31

Merci pour la réponse :)
J'ai l'erreur suivante :

Code : Tout sélectionner

#1242 - Subquery returns more than 1 row
Il y a plusieurs lignes de résultats je ne comprends pas d'ou vient l'erreur ou ce qui cloche. Je continue a chercher :s

ViPHP
xTG
ViPHP | 7331 Messages

31 déc. 2010, 11:47

Pas forcement bizarre.
Tu as des utilisateurs provenant de différents services. ^^
Donc (userLogin, userService, userSall), soit 3 n-uplets (? = on se fiche de la valeur) :
1, 1, ?
2, 1, ?
3, 2, ?

renverra 2 n-uplets :
2
1

Je vois le soucis, mais mes connaissances en SQL ne me permettent pas de t'aider... :/
Si je trouve j'apporterai une réponse mais j'espère que quelqu'un pourra t'éclairer avant.

Eléphant du PHP | 59 Messages

02 janv. 2011, 01:13

Personne ? si qqn avait une piste ca serait vraiment cool :(

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

02 janv. 2011, 12:35

Donne nous le schéma SQL de ta table (commande CREATE TABLE) ainsi qu'un petit jeu de test pour qu'on puisse essayer
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer