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

SQL Oracle Discussion :

Select / Group by / Having


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 124
    Points : 61
    Points
    61
    Par défaut Select / Group by / Having
    Bonjour,

    J'essaie de monter une requête qui me ramene trois champs et j'aimerai faire un having sur l'un d'entre eux. Je n'y arrive pas, je vous montre un exemple pour être plus clair.

    Voici ma requête qui me ramène les éléments le bon nombre d'occurence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select a.chmp1, b.chmp2
    from a.a, b.b
    where ...
    group by a.chmp1, b.champ2 
    having count(b.champ2) > 1
    Ca marche très bien jusqu'au moment ou je veux rajouter une colonne. Car cet ajout fait que je perd énormement d'occurence du fait qui me fait une agrégation sur ce troisième champ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select a.chmp1, b.chmp2, c.chmp3
    from a.a, b.b
    where ...
    group by a.chmp1, b.champ2, c.chmp3 
    having count(b.champ2) > 1
    Lorsque je rajoute ce troisieme champ je suis obligé de le rajouter dnas mon group by mais du coup il me fait un tri sur ce champ alors que je veux uniquement le ramener a titre d'informations.

    Si ce n'est pas clair n'hésitez pas a me demandé.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 41
    Points : 46
    Points
    46
    Par défaut
    si le champ que tu ajoute est une information unique pour la clé (a.chmp1, b.chmp2) alors tu peux ajouter ton champ avec une fonction de regroupement tel que SELECT a.chmp1, b.chmp2, max(c.chmp3)

  3. #3
    Membre actif Avatar de JerryMouse
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 215
    Points : 295
    Points
    295
    Par défaut
    le problème avec ta requete est que avec ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Group by Champ1,Champ2,Champ3
    , Il existe plusieurs occurances de Champ3 pour une occurance de Champ2.
    Il te faut juste permuter les champs 2 et 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Group by Champ1,Champ3,Champ2
    Très souvent, le plus difficile est de savoir ce que l'on veut.

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par N'Guessan Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Group by Champ1,Champ2,Champ3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Group by Champ1,Champ3,Champ2
    Ca c'est equivalent... l'ordre du group by n'a aucune importance. Si tu veux trier, utilise order by!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT a.chmp1, b.chmp2, c.chmp3
    FROM a.a, b.b
    comments détermines-tu quel chmp3 employer?


    si tu as <a1;b2;c30> et <a1;b2;c31>, alors <a1;b1> parait ok pour un group by a,b, mais quel c cherches-tu ? le c30, c31, les 2?

Discussions similaires

  1. Petite interrogation....SELECT ... GROUP BY
    Par zevince dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 15/04/2013, 13h52
  2. Réponses: 1
    Dernier message: 07/03/2012, 10h34
  3. Réponses: 1
    Dernier message: 22/07/2008, 18h05
  4. regroupement GROUP BY.HAVING et critères
    Par garsflo dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 17/10/2007, 12h11
  5. comment traduire un "group by/having" dans une query
    Par cau83 dans le forum Alimentation
    Réponses: 1
    Dernier message: 05/06/2007, 09h05

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