[RESOLU] Compter des données dispersées en une seule requête

Eléphant du PHP | 337 Messages

20 août 2012, 23:25

Bonjour à tous,

Je voudrais faire une requête particulière, mais n'ai même pas le moindre début d'idée pour y parvenir...

J'ai une table d'utilisateurs, ou chaque entrée est identifiée par un champ unique "id".
J'ai une table de commandes, ou chaque entrée contient un champ "id_user" correspondant à l'id d'un des utilisateurs.

Je voudrais faire une requête qui selectionnerait tous les utilisateurs par ordre croissant/décroissant de nombre de commandes.
Comment puis-je faire ça ?

Merci pour votre aide.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

21 août 2012, 00:31

Liste des utilisateurs qui ont commandé par ordre croissant du nombre de commandes
SELECT u.*, COUNT(c.id_user) as Nb_commandes
FROM utilisateurs u JOIN commandes c ON u.id=c.id_user
GROUP BY c.id_user
ORDER BY COUNT(c.id_user)
Liste des utilisateurs qui ont commandé par ordre décroissant du nombre de commandes
SELECT u.*, COUNT(c.id_user) as Nb_commandes
FROM utilisateurs u JOIN commandes c ON u.id=c.id_user
GROUP BY c.id_user
ORDER BY COUNT(c.id_user) DESC
ici on a utilisé DESC

Liste de tous les utilisateurs (même ceux qui n'ont pas de commandes) par ordre croissant du nombre de commandes
SELECT u.*, COUNT(c.id_user) as Nb_commandes
FROM utilisateurs u LEFT JOIN commandes c ON u.id=c.id_user
GROUP BY c.id_user
ORDER BY COUNT(c.id_user)
ici on a utilisé LEFT JOIN
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 337 Messages

21 août 2012, 02:16

Et ça marche du premier coup, super !
Merci beaucoup.

Je vais étudier de près cette requête, car je n'y ai pas compris grand chose (décidément, sorti des SELECT, INSERT, UPDATE et DELETE, je suis une chèvre en sql :roll:).