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 :

Une requete impossible !


Sujet :

Langage SQL

Vue hybride

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut Une requete impossible !
    Bonjour a tous, merci d'avance pour un coup de main, je ne sais meme pas si ce que je veux faire est possible !

    Dans ma base j'insere des resultats de tests divers :
    T_EXECUTION(ID,DATE,RESULTAT,TEST)
    T_TEST(ID,NOM)

    Il y a plusieurs executions de plusieurs tests.
    Il y a plusieurs executions du meme test par jour.
    Les resultats sont une chaine de caractere : "OK" ou "NOK"

    Pour en visualiser les resultats globaux, je requete sur les deux tables en groupant par ID de type de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * 
    FROM T_EXECUTION
    LEFT JOIN T_TEST ON T_EXECUTION.TEST=T_TEST.ID
    GROUP BY T_TEST.ID
    Jusqu'ici tout va bien ...

    Je souhaite voir pour tous les tests différents :
    - Le nom du test,
    - La date de la derniere execution,
    - le resultat de la derniere execution,
    - le nombre de OK pour ce test aujourd'hui,
    - le nombre de NOK pour ce test aujourd'hui,
    - UNE TENDANCE BASEE SUR LES 3 DERNIERS RESULTATS DE TEST.
    et c'est la que le bât blesse, je n'ai pas trouvé de solution pour isoler ces "3 derniers tests" sans casser toute ma requete

    Pour les premiers champs, j'en suis la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT T_TEST.NOM, SUBTABLE.derniere_date, T_EXECUTION.RESULTAT, SUBTABLE.nb_ok, SUBTABLE.nb_nok
    FROM T_EXECUTION LEFT JOIN T_TEST ON T_EXECUTION.TEST=T_TEST.ID,
    (  SELECT T_TEST.ID,max(T_EXECUTION.DATE) AS dernier_date,
       sum(Decode(T_EXECUTION.RESULTAT,'OK',1, 0)) as nb_ok
       sum(Decode(T_EXECUTION.RESULTAT,'NOK',1, 0)) as nb_nok
       FROM T_EXECUTION,T_TEST
       WHERE T_EXECUTION.TEST=T_TEST.ID
       AND T_EXECUTION.DATE>/* je calcule la date du jour */
       GROUP BY T_TEST.ID
    ) SUBTABLE
    WHERE SUBTABLE.derniere_date=T_EXECUTION.DATE
    AND SUBTABLE.ID = T_EXECUTION.TEST

    Quelqu'un peut me donner un indice pour requeter a la fois sur l'ensemble des données et un groupe isolé comme "les 3 dernieres lignes" pour que je puisse calculer ma tendance ?
    Meci

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 112
    Par défaut
    Tu ne peux pas rajouter un subtable2 dans lequel tu fait une jointure du meme style que ton premier subtable en triant par date d'execution desc et en utilisant rownum pour récupérer les 3 premieres lignes ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut
    Ca sonne plutot bien, oui ...
    Le coup du rownum, j'ai lu qqpart que ca pourrait m'aider, j'en cherche la syntaxe en ce moment

    Ce dont j'ai peur c'est que si j'ajoute une "SUBTABLE2", que je la filtre pour avoir moins de test et que je la lie a l'ensemble, ca filtre automatiquement tous mes resultats et je n'aurait plus mes nb_ok pour toute la journée (compliqué tout ca)

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Intéressez vous aux fonctions de fenêtrage de la norme SQL:2003 qui permettent de faire du classement (ranking). Voyez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/SQL_Server_2K5/N1.php
    § 1.7 Fonctions de classement et d'énumération (norme SQL:2003) :

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Par défaut
    Pour la petitez histoire, je me suis créé une fonction qui calcule la tendance et j'appelle ma fonction, bêtement.

    Merci Kiroukool pour ton intervention

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

Discussions similaires

  1. Une requete impossible?
    Par hugo69 dans le forum Requêtes
    Réponses: 4
    Dernier message: 26/05/2008, 14h10
  2. Impossible d'exporter le résultat d'une requete avec Runtime
    Par papatte62360 dans le forum Runtime
    Réponses: 4
    Dernier message: 24/11/2006, 12h48
  3. Réponses: 7
    Dernier message: 12/05/2006, 17h21
  4. Impossible de réaliser une requete d'insertion
    Par steinfield dans le forum Access
    Réponses: 10
    Dernier message: 28/04/2006, 13h31

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