IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Perdu dans les jointures SQL


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 84
    Par défaut Perdu dans les jointures SQL
    Bonjour à tous !

    Je me perd dans les jointures sql, voila je vous explique :

    J'ai des achats des membres sur mon site avec plusieurs fois le même membre qui achète et j'aimerais faire un top 10 du total des achats.

    Voici mes champs SQL :

    id - membre - montant

    Exemple :

    24 - jean - 50
    25 - alex - 10
    26 - jean - 10
    27 - elisa - 20
    28 - alex - 10

    J'aimerais avoir ce classement, regroupé par le total :

    jean - 60
    alex - 20
    elisa - 20

    Voici ma commande sql normale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT * FROM transactions ORDER BY membre LIMIT 10'
    Un grand merci à vous !

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 987
    Par défaut
    Deux choses me semblent bizarre dans ton exemple:
    • Les membres sont représentés par un prénom et pas par un id unique, donc avoir 2 membres avec le même prénom n'est pas possible.
    • L'id de la table transactions n'est pas unique (il y a deux transactions avec le même id).

    Aussi le membre elisa achète pour 20 pas pour 10.

    Est-ce normal?

    Pour obtenir le résultat souhaité, tu n'as pas besoin de faire une jointure, tu dois juste utiliser la fonction SUM() et GROUP BY.

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 84
    Par défaut
    Cosmo,

    une erreur s'est glissé dans mon exemple, voici le bon exemple :

    Exemple :
    24 - jean - 50
    25 - alex - 10
    26 - jean - 10
    27 - elisa - 20
    28 - alex - 10

    L'id est lui unique c'est pour ca que le membre n'est pas unique.
    Et oui pour Elisa, c'est 20 et pas 10, excuse moi, erreur en allant trop vite.

    Comment voit tu avec la fonction sum et group by ?

    Merci beaucoup

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 987
    Par défaut
    Comme ça:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select membre, sum(montant) as total
    from mabase.transactions
    group by membre
    order by total desc;

    Tu peux aussi ajouter membre dans la clause ORDER BY si tu veux aussi trier par prénom quand les totaux sont identiques.

  5. #5
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 84
    Par défaut
    Super merci beaucoup ! Parfait !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Perdu dans les streams
    Par Le Furet dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 04/01/2007, 11h58
  2. [Index] Utilisation dans les jointures..
    Par argv666 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/03/2006, 15h07
  3. Réponses: 17
    Dernier message: 18/03/2005, 10h23
  4. Choix dans les jointures externes
    Par WebPac dans le forum SQL
    Réponses: 2
    Dernier message: 21/01/2005, 13h34
  5. Perdue dans les Response.Write...
    Par Tapioca dans le forum ASP
    Réponses: 4
    Dernier message: 11/07/2004, 12h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo