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 :

[MySQL] Sélection selon code/historique


Sujet :

Langage SQL

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 130
    Par défaut [MySQL] Sélection selon code/historique
    Bonjour à tous,

    voici ma table:


    bug---------date_modified-----------------old_value------new_value

    140---------01/02/2005 14:36:54---------10--------------15
    140---------02/02/2005 09:50:16---------15--------------20
    140---------02/02/2005 12:07:36---------20--------------30
    140---------02/02/2005 17:44:15---------30--------------20
    140---------03/02/2005 13:43:23---------20--------------30
    140---------22/02/2005 11:09:37---------30--------------45
    140---------24/02/2005 18:33:05---------45--------------80
    140---------04/03/2005 12:23:50---------80--------------90
    140---------29/03/2005 15:05:40---------90--------------20
    140---------29/03/2005 15:05:50---------20--------------15
    140---------29/03/2005 15:11:25---------15--------------20
    140---------09/06/2005 16:42:45---------20--------------30
    140---------15/06/2005 11:39:25---------30--------------20
    140---------29/06/2005 11:18:17---------20--------------30
    140---------29/07/2005 10:12:38---------30--------------45
    140---------18/08/2005 18:29:47---------45--------------80
    140---------10/10/2005 12:17:49---------80--------------45
    140---------20/10/2005 11:24:58---------45--------------40
    140---------20/10/2005 11:25:20---------40--------------45
    140---------17/01/2006 16:44:08---------45--------------80
    140---------06/02/2006 10:15:46---------80--------------90


    voici ce que je voudrais faire:

    je voudrais, pour une plage de date donnée, regarder si le bug est en 80 ou en 90 à la fin de la plage de date.
    donc pour

    140---------22/02/2005 11:09:37---------30--------------45
    140---------24/02/2005 18:33:05---------45--------------80
    140---------04/03/2005 12:23:50---------80--------------90
    140---------29/03/2005 15:05:40---------90--------------20

    je ne veux pas récupérer le bug

    par contre pour

    140---------22/02/2005 11:09:37---------30--------------45
    140---------24/02/2005 18:33:05---------45--------------80
    140---------04/03/2005 12:23:50---------80--------------90

    je veux récupérer le bug

    mais, si je récupère le bug il me faut la date la plus ancienne pour 80 et 90, c'est à dire que si le bug est 80 puis 90 je dois récupérer la date du premier (80)

    ex:
    140---------22/02/2005 11:09:37---------30--------------45
    140---------24/02/2005 18:33:05---------45--------------80
    140---------04/03/2005 12:23:50---------80--------------90

    je récupère 24/02/2005

    meme chose si:

    140---------22/02/2005 11:09:37---------30--------------45
    140---------24/02/2005 18:33:05---------45--------------80
    140---------03/03/2005 12:23:50---------80--------------90
    140---------04/03/2005 12:23:50---------90--------------80

    je veux récupérer 24/02/2005

    et tout ceci dans une requete SQL

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 99
    Par défaut
    Bonjour,

    Je pense que la requête suivante devrait te convenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select a.date_modified
    from ma_table a
    where a.new_value = 80
      and exists (select 1
                  from ma_table b
                  where a.bug = b.bug
                    and b.old_value = 80
                    and b.new_value = 90
                    and b.modified = (select max(c.date_modified)
                                      from ma_table c
                                      where c.bug = b.bug))

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 130
    Par défaut
    euh ce n'est pas tout à fait ça, je reformule:

    sur une durée donnée, si la dernière date_modified n'a pas une new_value à 80 ou 90 alors je ne compte pas le bug_id dans mon nombre de bug
    si par contre la new_value est à 80 ou 90 alors il faut que je regarde si la new_value d'avant est à 80 ou 90 et si la new value d'avant avant est à 80 ou 90 ... et prendre la date_modified du tout premier 80 ou 90

  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
    21 998
    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 : 21 998
    Billets dans le blog
    6
    Par défaut
    Peut tu poster tes tables et tes données en respectant ceci :
    http://www.developpez.net/forums/viewtopic.php?t=32668

    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é
    Inscrit en
    Mai 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 130
    Par défaut
    voici ma table:

    CREATE TABLE requete3
    bug_id int
    date_modified date
    old_value int
    new_value int

    elle contient bcp de choses alors j'en ai enlevé:

    bug_id------date_modified---------------old_value-------new_value
    12----------13/01/2005 19:26:28--------10---------------80
    12----------18/01/2005 17:38:15--------80---------------45
    12----------18/01/2005 17:39:37--------45---------------90
    12----------18/01/2005 17:39:59--------90---------------80
    12----------18/01/2005 17:50:28--------80---------------90
    140---------01/02/2005 14:36:54--------10---------------15
    140---------02/02/2005 09:50:16--------15---------------20
    140---------02/02/2005 12:07:36--------20---------------30
    140---------02/02/2005 17:44:15--------30---------------20
    140---------03/02/2005 13:43:23--------20---------------30
    140---------22/02/2005 11:09:37--------30---------------45
    140---------24/02/2005 18:33:05--------45---------------80
    140---------04/03/2005 12:23:50--------80---------------90
    140---------29/03/2005 15:05:40--------90---------------20
    140---------29/03/2005 15:05:50--------20---------------15
    140---------29/03/2005 15:11:25--------15---------------20
    140---------09/06/2005 16:42:45--------20---------------30
    140---------15/06/2005 11:39:25--------30---------------20
    140---------29/06/2005 11:18:17--------20---------------30
    140---------29/07/2005 10:12:38--------30---------------45
    140---------18/08/2005 18:29:47--------45---------------80
    140---------10/10/2005 12:17:49--------80---------------45
    140---------20/10/2005 11:24:58--------45---------------40
    140---------20/10/2005 11:25:20--------40---------------45
    140---------17/01/2006 16:44:08--------45---------------80
    140---------06/02/2006 10:15:46--------80---------------90

    j'ai fait une requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT Requête3.bug_id, Last(Requête3.date_modified) AS DernierDedate_modified
     
    FROM Requête3
     
    WHERE (((Requête3.date_modified) Between #2/28/2005# And #3/29/2005#) AND ((Requête3.new_value)="80" Or (Requête3.new_value)="90") AND ((Requête3.old_value)<>"80" And (Requête3.old_value)<>"90"))
     
    GROUP BY Requête3.bug_id;
    le problème c'est que lorsque pour une plage de date il y a

    140---------20/10/2005 11:24:58--------45---------------40
    140---------20/10/2005 11:25:20--------40---------------45
    140---------17/01/2006 16:44:08--------45---------------80
    140---------06/02/2006 10:15:46--------80---------------90

    ça me donne bien 17/01/2006 16:44:08 (première date de 80 ou 90)

    par contre si j'ai ça:

    140---------03/02/2005 13:43:23--------20---------------30
    140---------22/02/2005 11:09:37--------30---------------45
    140---------24/02/2005 18:33:05--------45---------------80
    140---------04/03/2005 12:23:50--------80---------------90
    140---------29/03/2005 15:05:40--------90---------------20

    il me donne 24/02/2005 18:33:05 alors que moi je veux que si la dernière date n'est pas ni 80 ni 90 alors je ne veux pas le compter.

    je veux les bugs qui sont en 80 ou 90 à la fin de ma plage de date donc si à la fin ya pas 80 ou 90, j'en veux pas et si ya 80 ou 90 et que cellle d'avant est aussi 80 ou 90 alors je veux la plus ancienne.

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 130
    Par défaut
    Ce n'est peut être pas possible à faire ....

Discussions similaires

  1. sélection selon une occurence
    Par Arsene12 dans le forum WinDev
    Réponses: 3
    Dernier message: 07/01/2008, 20h34
  2. Sélection selon critère
    Par Tux_xd dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/07/2007, 10h38
  3. [SQL] Sélection selon un paramètre contenant plusieurs valeurs
    Par rainbow14 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 21/05/2007, 16h15
  4. [MySQL] Aide requête MySQL : sélection aléatoire d'un enregistrement avec critère
    Par iwf-fr dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/05/2007, 09h01
  5. [MySQL] Sélection selon historique
    Par zax-tfh dans le forum Langage SQL
    Réponses: 7
    Dernier message: 04/03/2006, 11h34

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