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 :

Limiter les résultats d'une requête à \today\' - n jours


Sujet :

Langage SQL

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1
    Par défaut Limiter les résultats d'une requête à \today\' - n jours
    Bonsoir,

    je suis un profane et j'essaie désespérément de trouver la solution au problème suivant.

    Je dois exploiter des informations gérées à priori sous sybase. J'ai créé un lien oDBC dans un fichier excel.

    J'ai intégré une requête dont je n'arrive pas à limiter les résultats à \'Aujourd\'hui\' - n jours.

    Les temps de réponses sont longs (6 mois d'historique à ramener lors de chaque actualisation)

    Comment puis je faire pour répondre à ce problème?

    la requête (de base)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT iApplicationStat.Application, iApplicationStat.ApplicationID, iApplicationStat.Timestamp, iApplicationStat.CallsAnswered, iApplicationStat.CallsAbandoned, iApplicationStat.Time
    FROM blue.dbo.iApplicationStat iApplicationStat
    WHERE (iApplicationStat.ApplicationID=10036) AND (iApplicationStat.Time Between \'08:00\' And \'17:45\') OR (iApplicationStat.ApplicationID=10061) AND (iApplicationStat.Time Between \'08:00\' And \'17:45\') OR (iApplicationStat.ApplicationID=10064) AND (iApplicationStat.Time Between \'08:00\' And \'17:45\')
    ORDER BY iApplicationStat.Timestamp DESC
    merci d'avance

    Eddy

  2. #2
    rsc
    rsc est déconnecté
    Membre émérite
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Par défaut
    J'essaierais qqch du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (TODAY - MaTable.MaDate) < n

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    En écrivant ta requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT iApplicationStat.Application, iApplicationStat.ApplicationID, 
           iApplicationStat.Timestamp, iApplicationStat.CallsAnswered, 
           iApplicationStat.CallsAbandoned, iApplicationStat.Time 
    FROM blue.dbo.iApplicationStat iApplicationStat 
    WHERE (iApplicationStat.ApplicationID=10036) 
      AND (iApplicationStat.Time Between \'08:00\' And \'17:45\') 
       OR (iApplicationStat.ApplicationID=10061) 
      AND (iApplicationStat.Time Between \'08:00\' And \'17:45\') 
       OR (iApplicationStat.ApplicationID=10064) 
      AND (iApplicationStat.Time Between \'08:00\' And \'17:45\') 
    ORDER BY iApplicationStat.Timestamp DESC
    j'arrive à la lire, ce qui n'est pas le cas avec ta version non indentée, et du coup je me dis que ton mélange de AND et de OR sans parenthèses (ou plutôt avec des parenthèses inutiles, mais pas les nécessaires) doit être bien longue et ne doit pas ramener ce que tu veux.

    Essaye (si j'ai bien compris)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT iApplicationStat.Application, iApplicationStat.ApplicationID, 
           iApplicationStat.Timestamp, iApplicationStat.CallsAnswered, 
           iApplicationStat.CallsAbandoned, iApplicationStat.Time 
    FROM blue.dbo.iApplicationStat iApplicationStat 
    WHERE (iApplicationStat.ApplicationID=10036 
      AND  iApplicationStat.Time Between \'08:00\' And \'17:45\' ) 
       OR (iApplicationStat.ApplicationID=10061 
      AND  iApplicationStat.Time Between \'08:00\' And \'17:45\' ) 
       OR (iApplicationStat.ApplicationID=10064 
      AND  iApplicationStat.Time Between \'08:00\' And \'17:45\' ) 
    ORDER BY iApplicationStat.Timestamp DESC
    ou encore mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT iApplicationStat.Application, iApplicationStat.ApplicationID, 
           iApplicationStat.Timestamp, iApplicationStat.CallsAnswered, 
           iApplicationStat.CallsAbandoned, iApplicationStat.Time 
    FROM blue.dbo.iApplicationStat iApplicationStat 
    WHERE iApplicationStat.ApplicationID IN (10036, 10061, 10064)
      AND  iApplicationStat.Time Between \'08:00\' And \'17:45\'  
    ORDER BY iApplicationStat.Timestamp DESC
    plus la proposition de rsc bien sur.

    L'alias sur la table est inutile (une seule table est utilisée).

Discussions similaires

  1. Limiter les résultats d'une zone de liste déroulante (requête)
    Par Tipstitou dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 11/02/2008, 11h01
  2. Réponses: 4
    Dernier message: 26/05/2006, 08h59
  3. Transformer les résultats d'une requête dans un autre ordre
    Par keikun dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 12/04/2006, 16h29
  4. [JDBC] Stocker les résultats d'une requête
    Par etiennegaloup dans le forum JDBC
    Réponses: 9
    Dernier message: 26/07/2005, 18h18
  5. Réponses: 4
    Dernier message: 14/12/2004, 14h34

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