1
votes

Compter les valeurs de MySQL

J'ai ma base de données MySQL avec les données ci-dessous.

Je veux compter le nombre de fois que Jean a payé.

SELECT COUNT(*) FROM USER WHERE NUMBER = '021' OR NAME = 'JOHN' HAVING STATUS = 'PAID'

Ma requête strong >:

ID NAME NUMBER COUNTRY STATUS 
----------------------------------
1  JOHN  021    USA    PAID
2  MIKE  022    CA     UNPAID
3  KENT  023    UK     NOT-OPEN
4  JOHN  021    USA    PAID

Mais j'obtiens cette erreur:

Colonne inconnue "STATUS" dans "clause ayant"


1 commentaires

Vous avez besoin d'un Group By avant le Have


3 Réponses :


0
votes

Remplacez HAVING par AND

Aussi pour vous assurer que vous n'obtenez que le décompte de cet utilisateur unique, vous devez également mettre

    SELECT COUNT(*) FROM USER WHERE (NUMBER = '021' AND NAME = 'JOHN') AND STATUS = 'PAID'

Essayez ceci:

(NUMBER = '021' AND NAME = 'JOHN')


0 commentaires

1
votes

Ayant travaillé sur résultat .. vous n'avez pas la colonne STATUS dans votre resul

ou vous ajoutez à la clause WHERE (et évitez de l'avoir)

SELECT COUNT(*), STATUS  
FROM USER 
WHERE NUMBER = '021' OR NAME = 'JOHN' 
GROUP BY STATUS 

HAVING STATUS = 'PAID'

ou vous ajoutez la colonne à sélectionner (mais cela nécessite pour la version mysql> 5.6 un groupe par le paramètre sql_mode par défaut)

SELECT COUNT(*) 
FROM USER 
WHERE ( NUMBER = '021' OR NAME = 'JOHN' )
AND STATUS = 'PAID'


0 commentaires

2
votes

Vous pouvez également faire comme ceci:

SELECT COUNT(*) FROM USER WHERE (NUMBER = '021' OR NAME = 'JOHN') AND (STATUS = 'PAID')


0 commentaires