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 :

Requête avec exclusion


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Par défaut Requête avec exclusion
    Bonjour,

    je dispose d'un table procédure de ce type
    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
     
    create table procedure(
    id number primary key,
    lib_proc varchar(50)
    );
     
    create table etape(
    id_etape number primary key,
    lib_etape varchar(50)
    );
     
    create table procedure_etape(
    id number,
    id_etape number,
    constraint pk_pe primary key (id, id_etape)
    );
    Je souhaites exécuter une requête me retournant toutes les procédures ne contenant pas l'id_etape 16.

    Quelqu'un aurait une idée ?

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Par défaut
    voila la requête que je pensais être bonne si ça peut vous aidez.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select p.objet
    from procedure p, procedure_etape pe
    where p.id=pe.id_proc
    and pe.id_proc not in (select id_proc from etape where p.id=pe.id_proc and id_etape =16)

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Salut,

    Merci de respecter les règles du forum, notamment en indiquant un titre plus explicite et en mentionnant le SGBD utilisé.

    Concernant votre demande, sachez que vous utilisez un mot réservé de la norme SQL pour une de vos tables (procedure) et donc que cela vous expose à des ennuis conséquents.
    Dans la mesure du possible, renommez cette table.

    Enfin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT P.*
    FROM   MYPROCEDURE P
    WHERE  NOT EXISTS (SELECT *
                       FROM   PROCEDURE_ETAPE PE
                       WHERE  PE.ID = P.ID
                              AND PE.ID_ETAPE = '16');
    [EDIT]correction : j'avais mis n'importe quoi...
    [/EDIT]

  4. #4
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Citation Envoyé par Magnus
    Merci de respecter les règles du forum, notamment en indiquant un titre plus explicite et en mentionnant le SGBD utilisé.
    +1

    Il te faut toutes les proédures dont la PK ne contient pas d'enregistrement associé à l'étpe 16 dans la table de liens, c'est bien ça ?

    Attention en passant, c'es super de nous faire le script du jeu d'essai, mais ta requête ne lui correspond pas :
    - pas de champ p.objet,
    - pas de pe.idproc
    ...

    je contruirais ça ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT P.id
      FROM procedure P
     WHERE P.id NOT IN (SELECT PE.id
                          FROM procedure_etape PE
                         WHERE PE.id_etape = 16)
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 314
    Par défaut
    les 2 requêtes fonctionnent. Merci

  6. #6
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Préfère peut-être celle de Magnus, dont les performances doivent être meilleures, surtout si la sous-requête du IN te ramène beaucoup de valeurs
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

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

Discussions similaires

  1. [2005] Optimisation requête avec exclusions
    Par Mizar31 dans le forum Développement
    Réponses: 21
    Dernier message: 24/02/2015, 10h55
  2. Requête avec exclusion
    Par Angelik dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/11/2013, 12h47
  3. [MySQL] requête avec exclusion
    Par nicomax34 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/09/2011, 19h40
  4. Requête avec exclusion
    Par bpollet dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/05/2011, 18h18
  5. Requête avec exclusion de colonnes
    Par lemfi dans le forum Langage SQL
    Réponses: 8
    Dernier message: 31/01/2008, 14h38

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