PHP - Trier par nombres d'entrées (de lignes)

Fermé
LelLex Messages postés 1628 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 5 septembre 2012 - Modifié par LelLex le 11/02/2012 à 14:30
 Garth - 11 févr. 2012 à 21:10
Bonjour à tous,

J'aimerais, avec PHP / MySQL, savoir quels sont les éléments ayant le plus d'entrées dans ma table.

Par exemple, j'ai une table de 1000 lignes avec toujours les mêmes 10 "id". Donc l' "id 1" a 100 lignes, le deuxième en a 50, etc... (Pour faire simple, ces "id" n'ont pas le même nombres de lignes / d'entrées)

Je sais compter le nombre d'entrées en PDO :

$req = $db -> query('SELECT COUNT(*) FROM table WHERE id=\'1\'');   
$result = $req -> fetchColumn();   
$req -> closeCursor();

Seulement, je n'arrive pas à faire quelque chose comme :

Sélectionne les 4 IDs ayant le plus de lignes / d'entrées

Voilà ce que je cherche à faire ? Des solutions ?

Cordialement.
A voir également:

1 réponse

Salut,

les mêmes 10 "id"
Si votre champ id est l'identifiant(clé primaire) la table est fausse. En effet comment faites vous la différence entre 2 lignes qui ont pour id la valeur 1?
Soit c'est une clé étrangère et donc l'identifiant naturel est multiple :composé de l'identifiant naturel et de la clé étrangère soit le champ id n'est pas la clé primaire tout court et il vous faudra utiliser la clé primaire dans ce cas.

Pour votre requête avez vous entendu parler de la fonction MAX? Elle peut se combiner avec COUNT et vous pouvez imbriquer des requêtes les unes dans les autres(sous-requêtes) ainsi quue faire des requêtes sur plusieurs tables(jointures)...

Ce lien peut vous être utile:
http://sql.toutestfacile.com/maitriser_les_bases_de_donnees/premieres_requetes_sql_1.php5

Sinon rien ne vous empêche de faire plusieurs requêtes et de comparer(tester) les résultats en php si vous êtes plus à l'aise avec le php(SQL étant un langage de très bas niveau ça serait étrange, mais bon). L'opérateur logique est le même dans les 2 langages:
Supérieur à s'écrit comme ceci " >" dans une boucle conditionnelle. "<" est son équivalent contraire(inférieur à".

Bon je suit sympa aujourd'hui, essayez ceci:

SELECT MAX COUNT(*) FROM table GROUP BY 'id'

Pas testé mais littéralement ça devrait signifier:
Sélectionne(je suit intime avec le serveur je le tutoie) le compte maximum des groupe de 'id'
Mégateuf!
0
LelLex Messages postés 1628 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 5 septembre 2012 112
11 févr. 2012 à 18:39
Le champ en question je l'ai appelé "id" ici, c'était juste pour lui donner un nom. Evidemment, je ne parle pas du champ 'id' que l'on mettre en clé primaire, en AI, ... qui donne un numéro unique à chaque entrée.

Si ce nom vous gêne, appelons-le "P" ; donc nous avons "P1, P2, ..., P10"
0
Dans ce cas:
soit le champ id n'est pas la clé primaire tout court et il vous faudra utiliser la clé primaire dans ce cas.
Sinon ça donne quoi ça?
SELECT MAX COUNT(ID) FROM table GROUP BY 'P'

ID étant la clé primaire.
0