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 :

Jointure tri et regroupement


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 18
    Par défaut Jointure tri et regroupement
    Bonjour,
    je tourne autour d'un problème certainement simple, mais je pense que j'ai du mal à le cerner et donc à trouver la solution.

    J'ai deux tables:
    - facture (numero,echeance,auteur)
    - facturedetail (num_facture,date,montant, observation, num_affaire)

    Une facture peut avoir une ou plusieurs lignes de détails, le numéro de facture étant évidemment unique.

    Pour récupérer mes factures, je fais une jointure sur la table facturedetail et je les tri par numéro de facture pour que toutes les lignes de détails soient regroupées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT numero,date,echeance,auteur,montant,observation FROM facture
    LEFT JOIN facturedetail ON facturedetail.num_affaire=facture.numero
    ORDER BY numero
    Jusqu'ici tout va bien, mais si je veux trier mes factures par date, tout en gardant mes lignes de détails regroupées, je fais comment?
    Il y a bien une notion de parents enfants mais je sèche.

  2. #2
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut
    Salut !

    Je suis pas sur d'avoir saisi ton besoin, mais on peut trier des résultats sur plus d'une colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT numero,date,echeance,auteur,montant,observation FROM facture
    LEFT JOIN facturedetail ON facturedetail.num_affaire=facture.numero
    ORDER BY numero, date
    Avec cette requête tu auras les résultats triés selon le numéro (d'abord) et selon la date (après).

    Aussi tu parles de regroupement dans ton post, mais je pense que tu voulais juste parler de tri (ORDER BY) et non pas de regroupement (GROUP BY), non ??

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 18
    Par défaut
    Oui c'est bien d'un tri dont on parle, pas d'un group by.
    Le tri par plusieurs colonnes ne donne pas le résultat que j'attends.
    J'illustre ce que je souhaite obtenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    date           numero      montant
    01/01/11     2               25
    01/01/11     2               36
    02/01/11     1               26
    02/01/11     1               54
    02/01/11     1               65
    03/01/11     3               68
    En espérant être plus clair.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    et vous voullez quoi comme résultat en fait ?
    donnez un jeu de sortie

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 18
    Par défaut
    J'ai cité dans mon post précédent le résultat que je souhaite obtenir.
    C'est comme si je voulais afficher les posts de plusieurs sujets de discussion.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sujet 1
     post1
     post2
     post3
    Sujet 2
     post1
     post2
     post3
    Et je cherche à trier mes sujets selon différents critère (date,auteur,nombre de posts)

    Il y a bien la représentation intervallaire, mais pour un seul sous niveau je trouve que c'est lourd.

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    On part de facture et on atteri sur des sujets...

    Dans votre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    01/01/11     2               25
    01/01/11     2               36
    Comment savoir laquelle des deux lignes place-t-on en 1er ?

    Ensuite je ne comprend pas bien votre jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT numero,date,echeance,auteur,montant,observation FROM facture
    LEFT JOIN facturedetail ON facturedetail.num_affaire=facture.numero
    ORDER BY numero
    Au vu de vos tables :
    - facture (numero,date,echeance,auteur)
    - facturedetail (num_facture,montant, observation, num_affaire)
    Que représente num_facture et num_affaire dans la table facturedetail ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 18
    Par défaut
    J'ai utilisé l'exemple des sujets car il me semblait plus compréhensible pour tout le monde et correspond à mon attente.
    Dans mon exemple, l'ordre dans lequel s'affichent chaque lignes de détail d'une même facture a peu d'importance. Par contre, toutes les lignes de détail d'une même facture doivent s'afficher ensemble.

    Dans la table facturedetail, le champs num_facture est le numéro de facture auquel appartient la ligne de détail. num_affaire est une autre information propre à la ligne de détail, comme le montant.

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    ok,

    donc vous avez un problème dans votre jointure initiale.

    Ceci étant dit, le langage SQL n'est pas fait pour gérer de la cosmétique et c'est ce que vous voullez faire. (si j'ai bien compri le besoin)

    Une restitution de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    colonnes liées en-tête facture
       colonnes liées détail facture
    Est imposssible à avoir, car ce ne sont pas les même colonnes que vous ramenez.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 18
    Par défaut
    Bien évidemment, je ne cherche pas à créer mon indentation via SQL, elle n'est ici que pour illustrer le résultat final que je souhaite obtenir.
    Je ne cherche pas non plus à ramener des colonnes différentes.

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

Discussions similaires

  1. Jointures, tris et groupements
    Par azmeuk dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/02/2007, 16h10
  2. Requete Mysql + jointure + tri : arhfh!
    Par Amara dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/06/2006, 14h24
  3. Réponses: 8
    Dernier message: 13/01/2006, 11h35
  4. [Etat] Tri et regroupement
    Par acceso dans le forum IHM
    Réponses: 1
    Dernier message: 05/01/2006, 11h24
  5. [vbexcel]tri ou regroupement de ligne en fonction de valeur.
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/12/2005, 18h22

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