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 :

[SQL] pb requete au niveau des 'priorités'


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Janvier 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 10
    Par défaut [SQL] pb requete au niveau des 'priorités'
    Hello tout le monde,
    Gros soucis de débutant SQL sur une requête :

    Soit une table CODE_RETOUR avec les enregistrements suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      COD   LIBELLE
      001   Erreur Base 
      002   Erreur Disque
      003   Erreur Systeme
      004   Ok
    Soit une table LOG_TRAITEMENT avec les enregistrements suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      DEM   COD   DATE      RESULTAT
      CD1   001   10/10/10  SAVE
      CD2   002   10/10/10  SAVE
      CD4   004   09/10/10  LOG
      CD6   003   09/10/10  SAVE
      CD4   001   08/10/10  LOG
      CD5   004   08/10/10  SAVE
    Soit une table RESULTAT avec les enregistrements suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      RESULTAT  LIBELLE
      SAVE      Sauvegarde Totale
      LOG       Sauvegarde partielle
    Je voudrais faire une requete pour sortir tous les traitements de LOG_TRAITEMENT qui sont en date du 10/10/10 avec un COD different de 004 et DEM different de CD4.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      Select * from LOG_TRAITEMENT 
      where COD not in ('004') 
      and DEM not in ('CD4')
      and to_char (DATE, 'DD/MM/YY')='10/10/10'
    Seulement dans ce cas là, je ne ressortirais pas les enregistrements ou CD4 est associé à autre chose que 004

    En gros : je n'arrive pas à faire de requête pour élargir mon critère à plusieurs colonnes (je sais pas si suis très clair là...) du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       Select * from LOG_TRAITEMENT 
      where (COD not in ('004') and DEM not in ('CD4'))
      and to_char (DATE, 'DD/MM/YY')='10/10/10'
    Mais ça marche pas
    Une idée svp ?

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Je crois que ça ça marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM LOG_TRAITEMENT 
    WHERE (COD,DEM) != ('004','CD4')
    AND DATE = to_date('10/10/2010','dd/mm/yyyy')
    Attention c'est ta chaîne de caractère que tu dois convertir en date et non l'inverse (pense au cas '10/10/10' > '01/11/10' en chaîne de caractère)

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 10
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Je crois que ça ça marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM LOG_TRAITEMENT 
    WHERE (COD,DEM) != ('004','CD4')
    AND DATE = to_date('10/10/2010','dd/mm/yyyy')
    Attention c'est ta chaîne de caractère que tu dois convertir en date et non l'inverse (pense au cas '10/10/10' > '01/11/10' en chaîne de caractère)
    Bah non ça marche pas
    merci pour la correction pour l'histoire de la date par contre

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Ca c'est plus classique, ça devrait être bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select * from LOG_TRAITEMENT
    where DATE = to_date('10/10/2010','dd/mm/yyyy')
    MINUS
    SELECT * FROM LOG_TRAITEMENT 
    WHERE COD = '004'
    AND DEM = 'CD4'
    AND DATE = to_date('10/10/2010','dd/mm/yyyy')

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Il y a trois solutions, on va plutôt partir sur la journée du 8 octobre, c'est quand même plus représentatif du problème que le 10.

    La première idée de skuatamad est correcte mais c'est la syntaxe qui pèche.
    Il faut l'écrire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DEM, COD, DATE, RES
      FROM LOG_TRAITEMENT 
     WHERE DATE = to_date('08/10/2010','dd/mm/yyyy')
       AND (COD,DEM) <> (('004','CD4'));
    Si vous n'êtes pas à l'aise avec cette écriture, vous pouvez utilisez celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DEM, COD, DATE, RES
      FROM LOG_TRAITEMENT 
     WHERE DATE = to_date('08/10/2010','dd/mm/yyyy')
       AND (COD <> '004' OR DEM <> 'CD4');
    Ou son opposé, peut-être la plus simple à relire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DEM, COD, DATE, RES
      FROM LOG_TRAITEMENT 
     WHERE DATE = to_date('08/10/2010','dd/mm/yyyy')
       AND NOT (COD = '004' AND DEM = 'CD4');

  6. #6
    Membre régulier
    Inscrit en
    Janvier 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 10
    Par défaut
    Nickel tout compris et en plus ça marche
    Merci à vous deux

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

Discussions similaires

  1. [Toutes versions] Querydefs("requete").SQL coupé au niveau des retours à la ligne
    Par asmduty dans le forum VBA Access
    Réponses: 6
    Dernier message: 08/10/2012, 10h10
  2. [C#] Configuration du niveau de priorite des processus
    Par stephdiplo150 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/04/2007, 23h29
  3. Réponses: 5
    Dernier message: 06/02/2007, 13h46
  4. SQL Server 2005 gestion des priorités
    Par snouille dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/11/2006, 14h13
  5. Réponses: 7
    Dernier message: 05/09/2006, 08h56

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