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 ne fonctionne pas


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 98
    Points : 47
    Points
    47
    Par défaut Minus ne fonctionne pas
    Bonjour à vous

    Je pense avoir trouvé une solution, mais il doit y avoir un problème peut-être de parenthèses, si quelqu'un sait comment faire .


    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select count(*) 
    from matable
    where aval LIKE '%200704%' and idvente != 'aaa'and TR = 'B';
    Je trouve 29556

    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select count(*)
    from matable
    where aval like '%200704%' and idvente != 'aaa' and TR ='B' and
    idoffice like '67%' and (CCODEP = '045'or CCODEP ='034' or CCODEP ='031' or CCODEP = '080');
    Je trouve 3

    Le problème vient lorsque je veux faire MOINS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select count(*) 
    from matable
    where aval LIKE '%200704%' and idvente != 'aaa'and TR = 'B';
    MINUS
    select count(*)
    from matable
    where aval like '%200704%' and idvente != 'aaa' and TR ='B' and
    idoffice like '67%' and (CCODEP = '045'or CCODEP ='034' or CCODEP ='031' or CCODEP = '080');
    Resultat 29556 c'est faux, la requête devrait faire

    29556 - 3 = 29553

    Help, il manque quelque chose

    Qui va trouvé ?

    Merci pour votre aide..

  2. #2
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Points : 171
    Points
    171
    Par défaut
    Bonjour,

    Le minus est un moins au sens ensembliste, et non pas une soustraction.

    Cdt

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 98
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par deadoralive
    Bonjour,

    Le minus est un moins au sens ensembliste, et non pas une soustraction.

    Cdt
    Merci, mais alors comment faire la "soustraction" ??

    Le minus ne peut pas servir dans mon cas ?

    Pourtant cela devrait faire le résultat de la première requête minus la deuxième requête ??

    Merci pour le coup de pouce..

  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
    tout simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select nb1 - nb2 FROM
    (select count(*) nb1
    from matable
    where aval LIKE '%200704%' and idvente != 'aaa'and TR = 'B'),
    (select count(*) nb2
    from matable
    where aval like '%200704%' and idvente != 'aaa' and TR ='B' and
    idoffice like '67%' and (CCODEP = '045'or CCODEP ='034' or CCODEP ='031' or CCODEP = '080');

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 98
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par orafrance
    tout simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select nb1 - nb2 FROM
    (select count(*) nb1
    from matable
    where aval LIKE '%200704%' and idvente != 'aaa'and TR = 'B'),
    (select count(*) nb2
    from matable
    where aval like '%200704%' and idvente != 'aaa' and TR ='B' and
    idoffice like '67%' and (CCODEP = '045'or CCODEP ='034' or CCODEP ='031' or CCODEP = '080');
    Excellent, cela fonctionne à merveille

    Vous êtes le number ONE, Monsieur.

    Merci encore

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    avec un seul table scan

    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
     
    select 
      count(*)
      -
      count(case when 
        idoffice like '67%' and (
          CCODEP = '045' or 
          CCODEP ='034' or 
          CCODEP ='031' or 
          CCODEP = '080') then 1 end) c
    from matable 
    where
      aval LIKE '%200704%' 
      and idvente != 'aaa'
      and TR = 'B'
    note que ton aval LIKE '%200704%' m'inquiète sur ta façon de gérer les données...

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

Discussions similaires

  1. la clause MINUS ne fonctionne pas
    Par requiemforadream dans le forum ASP
    Réponses: 5
    Dernier message: 29/04/2005, 15h41
  2. Réponses: 6
    Dernier message: 27/01/2004, 11h14
  3. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04
  4. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 16h48
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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