Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
2171 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Combiner un select classique et un count()

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] Combiner un select classique et un count()

n°2308292
vandit
alive & kicking
Posté le 04-12-2017 à 07:37:16  profilanswer
 

Bonjour,
 
Quelqu'un saurait s'il est possible de combiner un SELECT classique et un count() dans la même requete ?
 
Par exemple
 
SELECT count(colonne1), colonne1 FROM table ...
 
ce qui nous donnerait la liste des rows de la colonne1 ainsi que le nombre de lignes retournées.
 
Merci.


---------------
"Première fois de ma vie que je te vois mais tu m'as l'air d'un sacré tocard !"
mood
Publicité
Posté le 04-12-2017 à 07:37:16  profilanswer
 

n°2308307
pluj
Posté le 04-12-2017 à 13:42:15  profilanswer
 

Code :
  1. SELECT (SELECT COUNT(colonne1) FROM TABLE), colonne1 FROM TABLE


?
 
Mais quel langage ?
 
Parce que via l'API tu peux récupérer le nombre de lignes renvoyées par la requête (exemple en PHP : mysqli_num_rows, PDOStatement::rowCount - officieusement, etc)
 
(bien que les deux ne soient pas équivalents : COUNT(colonne1) ne compte pas les lignes où colonne1 IS NULL)

Message cité 1 fois
Message édité par pluj le 04-12-2017 à 13:44:53
n°2308313
vandit
alive & kicking
Posté le 04-12-2017 à 14:56:39  profilanswer
 

pluj a écrit :

Code :
  1. SELECT (SELECT COUNT(colonne1) FROM TABLE), colonne1 FROM TABLE


?
 
Mais quel langage ?
 
Parce que via l'API tu peux récupérer le nombre de lignes renvoyées par la requête (exemple en PHP : mysqli_num_rows, PDOStatement::rowCount - officieusement, etc)
 
(bien que les deux ne soient pas équivalents : COUNT(colonne1) ne compte pas les lignes où colonne1 IS NULL)


 
J'ai pas precisé en PHP, mais j'avais utilisé le "mysqli_num_rows" mais vu que je fais un LIMIT dans ma query ça ne me donne pas le resultat escompté, et ça m'oblige a faire une 2nd requete pour avoir le nombre de ligne total.


---------------
"Première fois de ma vie que je te vois mais tu m'as l'air d'un sacré tocard !"
n°2308316
pluj
Posté le 04-12-2017 à 15:27:18  profilanswer
 

Quand on a toutes les données, ça change tout : dans ce cas tu peux utiliser la fonctionnalité SQL_CALC_FOUND_ROWS et la fonction FOUND_ROWS().
 
Tu fais toujours 2 "requêtes" mais la seconde n'est qu'un appel de la fonction FOUND_ROWS pour lequel MySQL t'auras gardé le résultat du SQL_CALC_FOUND_ROWS (une espèce de COUNT interne ignorant la clause LIMIT) au chaud.
 
Pour résumer :

  • une première requête en : SELECT SQL_CALC_FOUND_ROWS colonne1 FROM table ... LIMIT ... (c'est juste un mot clé en plus qui suit SELECT en somme par rapport à ton SELECT de base/origine)
  • une deuxième pour invoquer FOUND_ROWS : SELECT FOUND_ROWS() (à exécuter puis en faire un fetch pour récupérer ce nombre bien sûr)


Pour les détails, voir la doc de MySQL.
 
(si tu n'arrives pas à l'intégrer, repasses avec ton code ;))

Message cité 1 fois
Message édité par pluj le 04-12-2017 à 17:37:28
n°2308391
vandit
alive & kicking
Posté le 05-12-2017 à 17:45:06  profilanswer
 

pluj a écrit :

Quand on a toutes les données, ça change tout : dans ce cas tu peux utiliser la fonctionnalité SQL_CALC_FOUND_ROWS et la fonction FOUND_ROWS().
 
Tu fais toujours 2 "requêtes" mais la seconde n'est qu'un appel de la fonction FOUND_ROWS pour lequel MySQL t'auras gardé le résultat du SQL_CALC_FOUND_ROWS (une espèce de COUNT interne ignorant la clause LIMIT) au chaud.
 
Pour résumer :

  • une première requête en : SELECT SQL_CALC_FOUND_ROWS colonne1 FROM table ... LIMIT ... (c'est juste un mot clé en plus qui suit SELECT en somme par rapport à ton SELECT de base/origine)
  • une deuxième pour invoquer FOUND_ROWS : SELECT FOUND_ROWS() (à exécuter puis en faire un fetch pour récupérer ce nombre bien sûr)


Pour les détails, voir la doc de MySQL.
 
(si tu n'arrives pas à l'intégrer, repasses avec ton code ;))


 
Merci, ça devrait le faire  :jap:
 
edit: ça à marché impec   [:athome]


Message édité par vandit le 05-12-2017 à 18:15:18

---------------
"Première fois de ma vie que je te vois mais tu m'as l'air d'un sacré tocard !"

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Combiner un select classique et un count()

 

Sujets relatifs
[MySQL] Ajout de multiples enregistrements avec triggerPYTH COUNT MYSQL.Connector
Problème workbooks.countexécuter requete avec select row
Sondage de satisfaction avec Mysql[résolu]problème comparaison Php/MySql
Serveur Mysql[PERL/MySQL] Utilisation d'une variable dans la clause Where
Id absolu et Id relatif dans la même table MySQL 
Plus de sujets relatifs à : [MySQL] Combiner un select classique et un count()


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR