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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Compter des données dispersées en une seule requête

Re: Compter des données dispersées en une seule requête

par finipe » 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:).

Re: Compter des données dispersées en une seule requête

par sadeq » 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

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

par finipe » 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.