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 :

MINUS avec deux conditions


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 71
    Points
    71
    Par défaut MINUS avec deux conditions
    Bonjour,

    Voilà j'ai un petite soucis avec une requête : je ne sais pas si cela fonctionne pas. En fait, voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    insert into t_emetteur (code_emetteur, mois_ref, lib_emetteur, code_pays, code_secteur, code_activite, code_util, date_modification) 
              select upper(code) cd, mois mr, libelle lib, code_p cdp, code_s cds, 1, 'toto', date_insert from dual 
              minus 
              select code_emetteur cd, mois_ref mr, libelle, code_pays cdp, code_secteur cds, 1, 'SREFILIALE', date_insert from t_emetteur where code_emetteur = code and mois_ref = mois and code_pays = code_p and code_secteur = code_s;
    Le problème est que le code_util (ici toto) peut être aussi "tata" donc je voulais savoir comment faire pour faire un MINUS avec deux conditions

    Merci d'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 : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    C'est pas mieux de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO t_emetteur (code_emetteur, mois_ref, lib_emetteur, code_pays, code_secteur, code_activite, code_util, date_modification) 
              SELECT code_emetteur cd, mois_ref mr, libelle, code_pays cdp, code_secteur cds, 1, 'SREFILIALE', date_insert FROM t_emetteur WHERE code_emetteur = code AND mois_ref = mois AND code_pays = code_p AND code_secteur = code_s
    WHERE (...) NOT IN (upper(code) cd, mois mr, libelle lib, code_p cdp, code_s cds, 1, 'toto', date_insert FROM dual)
    OR (...) NOT IN (upper(code) cd, mois mr, libelle lib, code_p cdp, code_s cds, 1, 'tata', date_insert FROM dual)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 71
    Points
    71
    Par défaut
    Je n'y avais pas pensé je vais tester çà cela fait le même chose et c'est aussi rapide ou non?

  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 : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    c'est au moins aussi rapide voir plus

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 71
    Points
    71
    Par défaut
    Je n'arrive pas à le tester je met quoi à la pace de point de suspension?

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Ce qui sert à exclure les lignes... je peux pas savoir pour toi :o

    Et puis, même le MINUS ne fonctionnera jamais puisque SREFILIALE est forcément ni toto ni tata. Qu'est ce que tu veux faire exactement ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 71
    Points
    71
    Par défaut
    , en fait j'ai oublié de remplacer SREFILIALES par toto aussi, je reprend le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO t_emetteur (code_emetteur, mois_ref, lib_emetteur, code_pays, code_secteur, code_activite, code_util, date_modification) 
              SELECT upper(code) cd, mois mr, libelle lib, code_p cdp, code_s cds, 1, 'toto', date_insert FROM dual 
              minus 
              SELECT code_emetteur cd, mois_ref mr, libelle, code_pays cdp, code_secteur cds, 1, 'toto', date_insert FROM t_emetteur WHERE code_emetteur = code AND mois_ref = mois AND code_pays = code_p AND code_secteur = code_s;
    Si le code_util pour rester toto, ceci ne poserai aps de problème mais là il peut y avoir un autre code_util tata par exemple.
    Tu comprends mieux?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 71
    Points
    71
    Par défaut
    Ta solution ne veut pas fonctionner, elle tombe en erreur...
    peut-être parce qu'il y a deux clauses where...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 71
    Points
    71
    Par défaut
    Help me svp

  10. #10
    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
    Il manque le select dans le NOT IN

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    bah non, les listes de valeurs fonctionne

    Sinon, le message d'erreur on doit le deviner ?

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 71
    Points
    71
    Par défaut
    Désolé, en fait il y a une erreur de syntaxe au niveau du deuxième WHERE mais je ne comprend pas pourquoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO t_emetteur (code_emetteur, mois_ref, lib_emetteur, code_pays, code_secteur, code_activite, code_util, date_modification) 
              SELECT code_emetteur cd, mois_ref mr, libelle, code_pays cdp, code_secteur cds, 1, 'SREFILIALE', date_insert FROM t_emetteur WHERE code_emetteur = code AND mois_ref = mois AND code_pays = code_p AND code_secteur = code_s
    WHERE (code_emetteur) NOT IN (upper(code) cd, mois mr, libelle lib, code_p cdp, code_s cds, 1, 'toto', date_insert FROM dual)
    OR (code_emetteur) NOT IN (upper(code) cd, mois mr, libelle lib, code_p cdp, code_s cds, 1, 'tata', date_insert FROM dual)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Mais QUELLE ERREUR ???

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 71
    Points
    71
    Par défaut
    C'est bon j'ai trouvé cela fonctionne mais j'ai modifié des choses voilà le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO t_emetteur (code_emetteur, mois_ref, lib_emetteur, code_pays, code_secteur, code_activite, code_util, date_modification) 
              select upper(code) cd, mois mr, libelle, code_p cdp, code_s cds, 1, 'SREFILIALE', date_insert FROM dual          
    WHERE (code, mois) NOT IN (SELECT code_emetteur cd, mois_ref mr FROM t_emetteur);
    Merci beaucoup

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut

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

Discussions similaires

  1. Excel et SQL requete avec deux condition?
    Par jojo86 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/12/2009, 14h02
  2. Linq - jointure avec deux conditions
    Par boby62423 dans le forum Linq
    Réponses: 1
    Dernier message: 02/04/2009, 09h51
  3. Recherche avec deux conditions et deux boucles?
    Par neiluj26 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/10/2008, 19h49
  4. ADO avec deux conditions WHERE
    Par MuadDib_II dans le forum IHM
    Réponses: 9
    Dernier message: 29/07/2008, 15h42
  5. [VBA-E] Countif avec deux conditions
    Par bonilla dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/09/2007, 15h30

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