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 :

Recherche requête combinaison


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Recherche requête combinaison
    Bonsoir à tous,
    Je suis novice dans le langage SQL.
    Je vous explique mon problème : J'aimerais faire une requête qui me donne uniquement le nom des personnes ayant soit ABORTED (si une seule ligne) en status, soit ABORTED et BILLED en status. En fait, si on regarde le problème inversement : Je ne veux pas garder les nom des personnes ayant "TODO" et "SUSPENDED" en status.

    Voici la table :

    NOM STATUS
    ------ ---------
    JULIAN ABORTED
    JULIAN TODO
    MARIE ABORTED
    MARIE BILLED
    MARIE ABORTED
    TOM BILLED
    TOM ABORTED
    LAURA SUSPENDED
    LAURA ABORTED
    FRAN ABORTED

    La réponse attendue :

    NOM
    ------
    MARIE
    TOM
    FRAN


    Merci pour votre aide !
    Julian

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 240
    Points : 12 872
    Points
    12 872
    Par défaut
    Bonjour,
    En gros tu veux les noms des personnes qui ont un statut ABORDED, mais ni TODO ni SUSPENDED (BILLED peut être ignoré d'après ta demande).
    Avec un NOT EXISTS et une sous-requête corrélée, c'est tout à fait faisable. Il faut prendre toutes les lignes qui ont le statut ABORDED, et pour lesquelles il n'existe pas de ligne avec le même nom, et dont le statut est dans la liste TOTO,SUSPENDED.

    Tatayo.

  3. #3
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 421
    Points
    7 421
    Billets dans le blog
    1
    Par défaut
    Plus naturellement, j'aurais proposé l'utilisation de EXCEPT :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select nom
    from personne
    where statut = 'ABORTED'
    except
    select nom
    from personne
    where statut in ('TODO', 'SUSPENDED')

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    bonjour,

    ou avec un regroupement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT nom
    FROM personne
    GROUP BY nom
    HAVING MAX(CASE WHEN statut = 'ABORTED' THEN 1 ELSE 0 END) = 1 --> le statut ABORTED doit être présent
    AND MAX(CASE WHEN statut in ('TODO', 'SUSPENDED') THEN 1 ELSE 0 END) = 0 --> les statuts 'TODO' et 'SUSPENDED' ne doivent pas être présents

Discussions similaires

  1. rechercher des combinaisons de mots
    Par angelique_93 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 13/03/2009, 12h17
  2. Recherche de Combinaison
    Par LaPanic dans le forum Excel
    Réponses: 2
    Dernier message: 12/02/2008, 09h49
  3. Zone de recherche/Requête
    Par lelapinrusse dans le forum Access
    Réponses: 2
    Dernier message: 24/12/2007, 17h04
  4. Recherche requête désespérément
    Par pas85 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/12/2007, 17h23
  5. [Requête]recherche avec combinaisons de 3 choix pour X champs
    Par marco361020 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 18/04/2007, 11h34

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