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 :

Having count Oracle 10


Sujet :

Langage SQL

  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 Having count Oracle 10
    Bonjour,

    Petit soucis sur une requete.

    Voici mon tableau de données :

    Table1 :

    Contrat|||Version|||Couleur

    100000|||000000|||Vert
    100100|||012500|||Bleu
    100100|||012500|||Jaune
    100100|||010000|||Bleu
    200002|||000000|||Vert
    200002|||001000|||Jaune
    312000|||000010|||BLeu
    312000|||000010|||Vert

    Je désire ramener toutes les lignes qui ont plus d'une occurence pour le couple (contrat, version)
    C'est a dire :

    Contrat|||Version|||Couleur

    100100|||012500|||Bleu
    100100|||012500|||Jaune
    312000|||000010|||BLeu
    312000|||000010|||Vert

    Ma requete ressemble à ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select contrat, version, couleur from table1
    where ....
    group by contrat, version, couleur 
    having count(contrat, version, couleur) > 1
    C'est malheureusement loin de marcher. Petite précision, pour simplifier, ici, mes trois champs sont sur la meme table. En réalité, le dernier champ est sur une autre table (mais je pense que ca change rien au probleme).

    Merci par avance

  2. #2
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Sortez alors la couleur de votre regroupement,
    puis un Having count(1)>1 est largement suffisant.

    Genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select contrat, version, couleur
    from table1
    group by contrat, version
    having count(1)>1
    Bon courage
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  3. #3
    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
    Je me suis trompé dans mon exemple elle est assez proche de ce que vous me proposez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT contrat, version, couleur
    FROM table1
    GROUP BY contrat, version
    HAVING count(couleur)>1
    Mais SQL développer me jete :
    erreur oracle n°00979 : not a group by expression.

    Celle que vous me proposez me dit la meme chose.

    J'ai trouvé une requête qui fonctionne mais le résultat n'est pas satisfaisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT contrat, version, count(couleur)
    FROM table1
    GROUP BY contrat, version
    HAVING count(couleur)>1
    Mais avec ceci j'ai le nombre de couleur mais je n'ai pas le détail...

    Merci pour votre aide.

  4. #4
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    vous pouvez alors passer par une equijointure sur votre table
    Genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select a.contrat, a.version, a.couleur from table1 as a inner join
    (select contrat, version
    from table1 
    group by contrat, version
    having count(1)>1) as doublon
    on (a.contrat=doublon.contrat and a.version=doublon.version)
    Bon courage
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  5. #5
    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
    Merci pour votre aide,

    Je n'ai pas exactement appliqué votre conseil mais il m'a mit sur la bonne voie.
    Je ne suis pas a l'aise avec le join on je suis donc passé par un where in.

    Ma requete donne finalement ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT a.glcon_num,
      a.glcon_numver,
      b.totie_cod
    FROM glcon a,
      glgar b
      where (a.glcon_num, a.glcon_numver) in (SELECT c.glcon_num, c.glcon_numver
       FROM glcon c, glgar d
       WHERE c.glcon_num = d.glcon_num
        AND c.glcon_numver = d.glcon_numver
        AND d.glgar_dtf IS NULL 
       GROUP BY c.glcon_num,
         c.glcon_numver HAVING COUNT(1) > 1)
         and a.glcon_num = b.glcon_num
        AND a.glcon_numver = b.glcon_numver
        AND b.glgar_dtf IS NULL
    Désolé je n'ai pas repris l'exemple.
    Bonne journée

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

Discussions similaires

  1. Requête SQL avec Having Count
    Par illight dans le forum Langage SQL
    Réponses: 9
    Dernier message: 22/10/2013, 14h00
  2. [2008R2] Indicateur équivalent having count(*)>1
    Par Dextro dans le forum SSAS
    Réponses: 4
    Dernier message: 23/09/2011, 15h37
  3. Utilisation de la clause SQL HAVING COUNT
    Par nicolasline dans le forum Designer
    Réponses: 4
    Dernier message: 17/02/2011, 22h57
  4. Réponses: 1
    Dernier message: 22/06/2006, 12h11
  5. [Sql]Having Count ( Distinct )
    Par nuke_y dans le forum Oracle
    Réponses: 5
    Dernier message: 20/02/2006, 21h36

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