MYSQL : Récupération d'un tableau

Eric -  
SangokuSSJ4 Messages postés 480 Statut Membre -
Bonjour,

je dispose d'une table sql avec un champ 'membres' et un champ 'progression'
je cherche à obtenir un tableau contenant le nombre de membres dont la progression est :
>= 100,
>= 200,
>= 300,
...,
= progression maximale

et si c'est possible, en une seule requête sql

il y a-t-il un mot clé qui permette de faire cela ?
j'ai essayé plein de choses, mais je n'arrive jamais à réccupérer ce tableau

merci à vous
cordialement

8 réponses

SangokuSSJ4 Messages postés 480 Statut Membre 47
 
essaye les jointures du type "left join"
0
Eric
 
je regarde ça, merci
0
Eric
 
je n'ai qu'une seule table, le but est de savoir combien ont dépassé la progression par pas de 100 et combien sont au maximum
le résultat serait de la forme :
>= 100 => 12000 // nombre total de membres ayant leur progression >= 100
>= 200 => 8000
>= 300 => 3210
>= 400 => 987
= 412 => 601 // nombre ayant la progression maximale
0
SangokuSSJ4 Messages postés 480 Statut Membre 47
 
Je viens de trouver ça, essaye voir si ça fonctionne ?

https://forums.devx.com/showthread.php?19168-multiple-count-statements-in-1-sql-query
0
Eric
 
SELECT '?????' as Palier FROM 'membres' WHERE 'progression' IN ((SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 100),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 200),(SELECT COUNT('progression') FROM 'membres'WHERE 'progression' > 300),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 400),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 500),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 600),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 700),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 800),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 900),(SELECT COUNT('progression') FROM 'membres'WHERE 'progression' <=> (SELECT MAX('progression') FROM 'membres')));

La requête serait de ce style, mais si possible en automatisant les 100, 200, 300, ...
et je ne sais pas comment récupérer le résultat dans le ?????

je regarde ton lien
0
SangokuSSJ4 Messages postés 480 Statut Membre 47
 
pour récupèrer le résultat dans le ??? , je pense que ça doit ressembler à un tableau à dimension multiples, du genre Palier[2][1]...
0
Eric
 
Le résultat final serait un tableau à une dimension du style
Palier = array(12000, 8000, 3210, 987, 601);
la dernière valeur correspond à la progression max
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Eric
 
Bon, j'ai trouvé quyelque chose qui me convient :

SELECT CONCAT_WS(",",(SELECT COUNT('progression') FROM 'membres'WHERE 'progression' <=> (SELECT MAX('progression') FROM 'membres')),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 100),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 200),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 300),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 400),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 500),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 600),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 700),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 800),(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > 900)) AS Palier

tous les
"(SELECT COUNT('progression') FROM 'membres' WHERE 'progression' > ".$i."00)"
seront dans une boucle de fabrication de la requête

un explode me donnera mon tableau
Palier[0] corespond au max
Palier[1] au >=100
Palier[2] au >=200
...
0
SangokuSSJ4 Messages postés 480 Statut Membre 47
 
Bien joué :) Je garde cette méthode dans un coin ça pourrait m'être utile un jour :)
0
Eric
 
En tout cas, merci pour m'avoir aidé ;)
0
SangokuSSJ4 Messages postés 480 Statut Membre 47
 
Mais de rien :)
0