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

Langage SQL Discussion :

comment utiliser deux group by


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Par défaut comment utiliser deux group by
    Bonjour,

    J'ai une base dans laquelle je gere des clients, des commandes mais aussi des fournisseurs ainsi que catalogues avec donc des produits. Je cherche une requête qui me permette d'afficher des ventes par catalogue et par fournisseur, le tout ensemble.

    J'ai essayé avec un union mais cela ne semble pas fonctionner.

    Pouvez vous m'aider ?

    D'avance un grand merci.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Pour pouvoir commencer à donner un début de réponse, il nous faudrait connaitre la structure des tables en jeu ainsi qu'une ébauche de la requête que vous tentez d'effectuer.
    En précisant le SGBD que vous utilisez et sa version, les réponses proposées seront adaptées aux spécificités et limitations de celui-ci.
    Règles du forum Langage SQL à lire par tous
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !
    Tu veux un :
    ORDER BY Catalogue, Fournisseur

    ou un

    ORDER BY Catalogue
    ...
    UNION ALL
    ...
    ORDER BY Fournisseur

    ?
    L'union est un peu étrange, puisque ça va te mélanger les torchons et les serviettes.
    Cela dit, si c'est vraiment ce que tu veux, prend garde à :
    - Avoir le même nombre de colonnes dans les SELECT des deux parties de l'union
    - donner les mêmes noms (dans le même ordre) aux résultats du SELECT.

    Enfin, comme dit l'al1, tu peux aussi nous donner un peu plus de détail sur ce que tu cherches, ton SGBD, ton schéma, ce que tu as essayé et qui a planté, ...

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Par défaut
    Citation Envoyé par pacmann Voir le message
    Salut !
    Tu veux un :
    ORDER BY Catalogue, Fournisseur

    ou un

    ORDER BY Catalogue
    ...
    UNION ALL
    ...
    ORDER BY Fournisseur

    ?
    L'union est un peu étrange, puisque ça va te mélanger les torchons et les serviettes.
    Cela dit, si c'est vraiment ce que tu veux, prend garde à :
    - Avoir le même nombre de colonnes dans les SELECT des deux parties de l'union
    - donner les mêmes noms (dans le même ordre) aux résultats du SELECT.

    Enfin, comme dit l'al1, tu peux aussi nous donner un peu plus de détail sur ce que tu cherches, ton SGBD, ton schéma, ce que tu as essayé et qui a planté, ...
    Enfaite je voudrais afficher les différents fournisseurs ainsi que les ventes liés à ces derniers par catalogue pour tout les catalogues.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Par défaut
    Voici une partie de mes tables :

    Table ligne_commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Nom                                       NULL ?   Type
    ----------------------------------------- -------- ----------------------------
    NUM_LIGNE_COMMANDE                        NOT NULL NUMBER(7)
    NUM_COMMANDE                              NOT NULL NUMBER(7)
    REF_PRODUIT                               NOT NULL NUMBER(4)
    QTE                                       NOT NULL NUMBER(4)
    PU_HT                                     NOT NULL NUMBER(6,2)
    REMISE                                    NOT NULL NUMBER(3)
    Table catalogue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Nom                                       NULL ?   Type
    ----------------------------------------- -------- ----------------------------
    REF_PRODUIT                               NOT NULL NUMBER(4)
    NUM_CATALOGUE                             NOT NULL NUMBER(4)
    NUM_PRODUIT                               NOT NULL NUMBER(7)
    NB_PAGES                                           NUMBER(4)
    NUM_PAGE                                           NUMBER(4)
    REMISE                                             NUMBER(2)
    PU_HT                                              NUMBER(8,2)
    Table produit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Nom                                       NULL ?   Type
    ----------------------------------------- -------- ----------------------------
    NUM_PRODUIT                               NOT NULL NUMBER(7)
    NUM_TAILLE                                NOT NULL NUMBER(5)
    NUM_FOURNISSEUR                           NOT NULL NUMBER(7)
    NUM_COLORIS                               NOT NULL NUMBER(3)
    NUM_FAMILLE                               NOT NULL NUMBER(3)
    LIBELLE_PRODUIT                           NOT NULL VARCHAR2(30)
    QTE_STOCK                                 NOT NULL NUMBER(7)
    QTE_LIMITE                                NOT NULL NUMBER(7)

    Table fournisseur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Nom                                       NULL ?   Type
    ----------------------------------------- -------- ----------------------------
    NUM_FOURNISSEUR                           NOT NULL NUMBER(7)
    TYPE_FOURNISSEUR                                   VARCHAR2(1)
    NOM_FOURNISSEUR                           NOT NULL VARCHAR2(40)
    ADRESSE_1_FOURNISSEUR                     NOT NULL VARCHAR2(32)
    ADRESSE_2_FOURNISSEUR                              VARCHAR2(32)
    CP_FOURNISSEUR                            NOT NULL VARCHAR2(5)
    VILLE_FOURNISSEUR                         NOT NULL VARCHAR2(32)
    DATE_CREATION                             NOT NULL DATE
    J'utilise Oracle 10g et si ça peut vous aider voici la requête que j'ai écris mais qui ne fonctionne pas, ou plutôt elles fonctionnent indépendamment l'une de l'autre mais pas les deux ensembles avec l'union :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select num_catalogue, sum(ligne_commande.pu_ht*ligne_commande.qte)
    from ligne_commande, catalogue
    where ligne_commande.ref_produit = catalogue.ref_produit as test
    group by num_catalogue 
    union
    select famille.num_famille, sum(ligne_commande.pu_ht*ligne_commande.qte)
    from ligne_commande, catalogue, produit, famille
    where ligne_commande.ref_produit = catalogue.ref_produit
    and catalogue.num_produit = produit.num_produit
    and produit.num_famille = famille.num_famille
    group by famille.num_famille;

  6. #6
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Si tu fais une seule requête (celle avec la jointure sur toutes tes tables), et que tu :
    GROUP BY Catalogue, Fournisseur

    ça ne marche pas ?

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 62
    Par défaut
    Un grand merci, cela semble fonctionner. Je vais tout de même faire encore quelques tests pour être sur. Mais en tout cas merci pour votre aide

  8. #8
    Membre éclairé
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Par défaut
    pense au tag résolut!!!

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/08/2010, 17h42
  2. Comment utiliser deux connexions
    Par Sniper37 dans le forum Hibernate
    Réponses: 2
    Dernier message: 22/07/2010, 17h16
  3. comment utiliser deux units pour une seule fiche
    Par dmognin dans le forum Débuter
    Réponses: 8
    Dernier message: 05/02/2010, 16h07
  4. Réponses: 3
    Dernier message: 14/05/2008, 08h42
  5. [MySQL] Après une requête globale comment utiliser deux champs
    Par gb76 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/06/2007, 13h46

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