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 :

Deux conditions unies


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Par défaut Deux conditions unies
    Bonjour,

    Je suis un peu novice et j'en appelle à votre aide pour une requête sql qui me prend un peu la tête

    Voici la requête:
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    select
    			category as "Catégorie",
    			null as "j - 4",
    			null as "j - 3",
    			null as "j - 2",
    			null as "j - 1",
    			cnt as "25/05/2012"
    		from
    		(
    			with src as
    			(
    			select *
    			from EM_DATA_MSR_SC
    			where
    			EMSCG_GROUP = 'ING BDD' and
    			SCB_ACTIF = 1
    			)
    			select
    			0,
    			'Hors-délai' as category,
    			count(*) as cnt
    			from src
    			where
    			SCB_ATTENTE = 0 and
    			SCB_DELAY = 'Y'
     
    			union
    			select
    			1,
    			'À réaliser ce jour',
    			count(*)
    			from src
    			where
    			SCB_ATTENTE = 0 and
    			SCB_DELAY = 'T'
     
    			union
    			select
    			2,
    			'À venir',
    			count(*)
    			from src
    			where
    			SCB_ATTENTE = 0 and
    			SCB_DELAY is null
     
    			union
    			select
    			3,
    			'En attente',
    			count(*)
    			from src
    			where
    			SCB_ATTENTE = 1
                                          OR
                                          (EMSCC_STATUS = 'Pending' AND  EMSCC_APPSTATUS = 'Error')
    		)
    Dans la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select
    0,
    'Hors-délai' as category,
    count(*) as cnt
    from src
    where
    SCB_ATTENTE = 0 and
    SCB_DELAY = 'Y'
    J'aimerais rajouter deux conditions mais unies, c'est à dire que le résultat ne prenne pas l'une des deux conditions mais les deux en meme temps du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    select
    0,
    'Hors-délai' as category,
    count(*) as cnt
    from src
    where
    SCB_ATTENTE = 0 and
    SCB_DELAY = 'Y' AND
    (EMSCC_STATUS != 'Pending' and EMSCC_APPSTATUS != 'Error')
    Or ce n'est pas le cas...

    Comment faire pour avoir à la fois ces deux dernières conditions réunies?

    Merci d'avance pour votre aide

  2. #2
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Avec un "AND", c'est bien ce qui se passe. Le seul cas "étrange" que vous pourriez avoir serait avec un "OR" en plus (par exemple si vous rajoutiez un AND à la fin de votre requête "En attente), à cause des priorités qui ne s'appliqueraient pas forcément comme vous l'attendriez - le mieux étant alors de mettre des parenthèses.

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT 0, 'Hors-délai' AS category, count(*) AS cnt
    FROM src
    WHERE SCB_ATTENTE = 0 
    AND  SCB_DELAY = 'Y' 
    AND EMSCC_STATUS != 'Pending' 
    AND EMSCC_APPSTATUS != 'Error'
    Or ce n'est pas le cas...
    Un AND en sql marche toujours.. donc le raisonnement doit être faux.

    Peut-on avoir des données qui montrent ton problème ?

Discussions similaires

  1. Créer deux conditions
    Par ju3979 dans le forum Modélisation
    Réponses: 5
    Dernier message: 25/07/2007, 20h00
  2. une colonne repondant a la fois a deux conditions
    Par kase74 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/08/2006, 09h14
  3. [FLASH MX2004] Deux conditions dans une boucle
    Par pierrot10 dans le forum Flash
    Réponses: 1
    Dernier message: 06/11/2005, 16h31
  4. Peut on faire un selon à deux conditions ?
    Par Celia1303 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 18/10/2005, 16h16
  5. Instructions select case à deux conditions
    Par Celia1303 dans le forum Access
    Réponses: 15
    Dernier message: 14/10/2005, 16h22

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