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"
3 Réponses :
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')
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'
Vous pouvez également faire comme ceci:
SELECT COUNT(*) FROM USER WHERE (NUMBER = '021' OR NAME = 'JOHN') AND (STATUS = 'PAID')
Vous avez besoin d'un
Group Byavant leHave