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 :

Valeur à la dernière mise à jour ?


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 194
    Points : 102
    Points
    102
    Par défaut Valeur à la dernière mise à jour ?
    Bonjour, j'ai une table avec la structure suivante :

    champ
    vvaleur
    date de validité
    date de mise à jour

    ce que je voudrais, c'est par exemple faire la requete suivante ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT valeur
    FROM table
    WHERE
    champ='mon champ'
    AND date de validité >= '01/01/2005'
    AND date de validité <= '31/12/2005'
    AND date de mise à jour = max(date)
    A priori, rien de bien compliqué....

    Sauf que la dernière date de mise à jour peut être différente pour chaque champ, et même pour chaque date de validité !
    donc, le "where date de MAJ=select max date de MAJ) from table' ne marche pas :-S

    Merci de votre aide

  2. #2
    Membre habitué Avatar de davestar
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2003
    Messages : 99
    Points : 125
    Points
    125
    Par défaut
    Bonjour,
    tu utilises quel SGBD car je ne crois pas que Max soit implémenté dans tous?

    Sinon tu peux faire la même requette en récupérant uniquement la première ligne avec TOP (en SQLServer en tout cas pas en Oracle) après un tri de tes dates de mises à jour décroissant.

    Bon courage @+
    --
    Cordialement
    David Verriere
    Mes articles techniques

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 194
    Points : 102
    Points
    102
    Par défaut
    je pensais que ça serait la même chose pour tous les sgbd ; autant pour moi...
    Il s'agit donc d'oracle... :-S

  4. #4
    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
    Points : 2 227
    Points
    2 227
    Par défaut Re: Valeur à la dernière mise à jour ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT valeur
    FROM table a
    WHERE champ='mon champ'
    AND date de validité >= '01/01/2005'
    AND date de validité <= '31/12/2005'
    AND date de mise à jour = (SELECT max(date de mise à jour) 
                               FROM table b 
                               WHERE a.Champ = b.Champ (et autres conditions si nécessaire)
                               AND b.date de validité >= '01/01/2005'
                               AND b.date de validité <= '31/12/2005')
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  5. #5
    Membre habitué Avatar de davestar
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2003
    Messages : 99
    Points : 125
    Points
    125
    Par défaut
    Oups j'ai dit une grosse conneries, je devais encore être dans le paté
    Max c'est une fonction d'agrégat donc on ne peut pas la mettre dans le Where
    milles excuces

    Il faut effectivement utiliser la solution de Médiat
    --
    Cordialement
    David Verriere
    Mes articles techniques

  6. #6
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 194
    Points : 102
    Points
    102
    Par défaut
    Ok, merci ;
    là où j'ai "failli", c'est que je ne pensais pas que faire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    FROM table A
    WHERE....
    ....= (SELECT ... from table B
    WHERE A.id=B.id)
    fonctionnait.

    merci beaucoup

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

Discussions similaires

  1. date de dernière mise à jour d'un site
    Par laurentSc dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 03/09/2007, 14h02
  2. [Conception] application de dernière mise à jour
    Par bidule123456 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/07/2007, 16h02
  3. Afficher date dernière mise à jour dans Etat
    Par FredXIII dans le forum IHM
    Réponses: 3
    Dernier message: 22/03/2007, 10h37
  4. Réponses: 14
    Dernier message: 04/01/2007, 22h35
  5. Valeur zone avant mise à jour
    Par gbrunelle dans le forum Access
    Réponses: 4
    Dernier message: 16/12/2006, 14h41

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