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 :

Select all group having same value


Sujet :

Langage SQL

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Select all group having same value
    Bonjour

    Je cherche la meilleure maniere de faire le select suivant :
    J'ai une table avec trois colonnes

    BoxID
    Date
    Checked

    Pluisieurs rows peuvent avoir le meme BoxID
    La valeur Checked peut etre 0 ou 1

    Je voudrais extraitre tous les BoxID distinct ayant TOUS les Checked a 1 et Date not null

    Donc un Boxid ayant AU MOINS 1 Checked a zero ne doit pas apparaitre !!

    Merci de votre aide
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Bonjour,

    tu dois pouvoir t'en sortir avec un where Checked = 1 et un not exists sur Checked = 0
    Le Porc est un loup pour le Porc.

  3. #3
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Bonjour,

    Voici une premiere piste :

    - tu sélectionnes les BOXID dont le checked = 0
    - tu les exclus de ta requête avec un NOT IN

    P.S : pense à mettre ton SGBD et une ébauche de requête.
    ~ Lola ~

  4. #4
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Points : 473
    Points
    473
    Billets dans le blog
    1
    Par défaut
    Avec group by et having comme demandé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select BOXID
          ,sum (case Date when null then 1 else 0 end) as ko_date
          ,sum (case checked when 0 then 1 else 0 end) as ko_checked
    from Table
    group by BOXID
    having sum (case Date when null then 1 else 0 end) = 0
       and sum (case checked when 0 then 1 else 0 end) = 0
    A verifier ...

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonjour

    Merci de votre aide

    Je suis en SQL Server 2008

    Voici un exemple mais qui ne me donne pas ce que je souhaite (pas d'exclusion si Cheched=0)

    Je pense instinctivement que OVER PARTITION pourrait m'aider mais je ne maitrise pas bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT DISTINCT 
    VbagNumber,checked
    FROM TblFlatTradein 
    WHERE 
    VerifiedBoxDate is not null
    AND Checked=1
    ORDER BY VbagNumber,Checked
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    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
    16
    SELECT DISTINCT 
    VbagNumber,checked
    FROM TblFlatTradein T
    WHERE 
    VerifiedBoxDate IS NOT NULL
    AND Checked=1
    AND NOT EXISTS
    (
    SELECT VbagNumber
    FROM TblFlatTradein 
    WHERE 
    (VerifiedBoxDate IS NOT NULL)
    AND Checked=0
    AND VbagNumber = T.VbagNumber
    )
    ORDER BY VbagNumber,Checked
    Je pense que cette requête doit faire l'affaire.
    Je ne sais pas si c'est la plus efficace.
    J'ai mis (VerifiedBoxDate IS NOT NULL) entre parenthèses car je ne sais pas si tu dois exclure tous les enregistrements qui ont Checked = 0 ou tous les enregistrements qui ont Checked = 0 ET la date not null.
    Le Porc est un loup pour le Porc.

Discussions similaires

  1. Select max, group by et having
    Par Bram2 dans le forum Développement
    Réponses: 7
    Dernier message: 10/05/2010, 18h04
  2. Select ALL Sauf ...
    Par Le Serval dans le forum Langage SQL
    Réponses: 14
    Dernier message: 29/04/2006, 21h02
  3. selection avec group by mais ne garder que ...
    Par Larson dans le forum Langage SQL
    Réponses: 13
    Dernier message: 22/06/2005, 17h23
  4. Selection de Groupes ki ne sont pas sous groupes...
    Par superdada dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/07/2003, 14h42

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