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 having et group by


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 having et group by
    Bonjour,

    J'ai un petit soucis, je n'arrive pas a monter une requête qui ne parrait pas bien compliquée.

    Voici un exemple de tableau :

    n° coche
    34 T
    34 T
    34 F
    35 F
    56 T
    56 T
    72 F
    72 F
    72 F

    J'aimerais ramener les numéros de contrat ou toutes les coches sont à false. Dans cet exemple ce serait les contrats 35 et 72.

    Une idée?
    Merci par avance

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISCTINT num
    FROM tab
    WHERE coche = 'F'

  3. #3
    Membre éclairé Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Points : 773
    Points
    773
    Par défaut
    Dans ta soluce tu auras également celles qui ont des coches à TRUE et à FALSE.

    Je dirais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select distinct t1.no
    from matable t1
    where t1.no not in (select t2.no from matable t2 where t2.coche='T')
    order by t1.no
    Philippe CEROU,

    Architecte Systèmes & Bases de données.

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    en effet

    Pour être un peu utile je propose ceci sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT no FROM
      (SELECT no, SUM(DECODE(coche,'T', 1,0)) as True , SUM(DECODE(coche,'F', 1,0)) as False
    FROM matable
    GROUP BY no)
    WHERE False > 0 And True = 0
    Ca évite le double emploi de la table

  5. #5
    Membre éclairé Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Points : 773
    Points
    773
    Par défaut
    Beau rattrapage...

    Philippe CEROU,

    Architecte Systèmes & Bases de données.

  6. #6
    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 messieurs,

    J'ai testé la première proposition qui semble être très correct. Je te remercie.
    Quelle est la plus performente des deux car il a mouliné pour me sortir ma réponse.

    Merci

  7. #7
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Essaye la 2eme qui devrait etre mieux malgré le FTS si tu ne mets pas de condition.

  8. #8
    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 a vous.
    Je clos le sujet, rapidement résolu.

  9. #9
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    que c'est laid


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT num
    FROM tab
    GROUP BY num
    HAVING min(coche) = 'F'
    AND max(coche) = 'F'
    Ceci en admettant que coche est not null
    On peut même simplifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT num
    FROM tab
    GROUP BY num
    HAVING max(coche) = 'F'
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  10. #10
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    c'est beau... j'suis tout ému

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

Discussions similaires

  1. Problème SELECT, CASE et Group by
    Par Royd938 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 03/10/2014, 07h41
  2. Select max et GROUP BY
    Par mdimagho dans le forum Webi
    Réponses: 1
    Dernier message: 19/07/2013, 11h49
  3. SELECT sur un GROUP BY
    Par zizoufoot dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/03/2013, 13h15
  4. Réponses: 8
    Dernier message: 17/09/2009, 15h08
  5. Imbriquer un SELECT avec un GROUP BY
    Par yoric dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/11/2007, 14h39

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