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

Requêtes PostgreSQL Discussion :

requête UPDATE sur champ DATE


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Géomaticienne
    Inscrit en
    Juillet 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Géomaticienne
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 18
    Par défaut requête UPDATE sur champ DATE
    Bonjour,

    je cherche à mettre au point une requête me permettant, au moment de la mise à jour d'un champ date : "date0", de garder un historique des dates saisies au travers du champ "date 0" :

    Par exemple :
    - Quand je saisis le champ DATE0 (avec la valeur 2010) => la valeur 2010 va également se copier dans le champ DATE1
    - Quand je reviens sur ce champ DATE0 (cette fois je change 2010 en 2011), alors 2011 va se copier dans le champ DATE2
    - Quand je reviens sur ce champ DATE0 (cette fois je change 2011 en 2012), alors 2012 va se copier dans le champ DATE3
    -...........

    Je souhaite obtenir dans mon formulaire un résultat comme ceci :

    DATE0 DATE1 DATE2 DATE3
    2012 2010 2011 2012

    Voici ma requête mais en l'état elle ne fonctionne pas....... (la valeur 1800-01-01 correspond à la valeur par défaut quand aucune date n'ai encore saisie)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     UPDATE MaTable SET date1 = (
    	   CASE 
    		WHEN date1 = '1800-01-01' THEN NEW.date1 = NEW.date0
    		WHEN date1 > '1800-01-01' THEN NEW.date2 = NEW.date0
                    WHEN date1 > '1800-01-01' AND   date2 > '1800-01-01' THEN NEW.date3 = NEW.date0
     
    	   ELSE date1
    	   END);
    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 623
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Il ne faut surtout pas modéliser la table comme vous le proposez avec répétition d'une donnée
    - à l'état initial, vous avez à minima 3 colonnes inutiles (et même 4 puisque 1800-01-01 est une valeur fictive)
    - si un jour vous devez stocker non plus 4 dates mais plus, il vous faudra modifier la table et tous les traitements qui vont avec

    Donc
    Soit vous historisez toute la ligne ce qui vous permet de conserver non seulement la date mais aussi les autres attributs qui ont pu évoluer, soit vous créez une table avec une relation 0,n qui ne contiendra que les quelques attributs que vous souhaitez historiser

    Certains SGBD (SQL server, DB2...) proposent des tables temporelles je ne sais pas si c'est disponible dans PG, ça peut éventuellement vous rendre service si solution 1

  3. #3
    Membre averti
    Femme Profil pro
    Géomaticienne
    Inscrit en
    Juillet 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Géomaticienne
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 18
    Par défaut
    Merci pour ton aide,

    j'ai en effet une table date afin d'y stocker les informations et avoir ainsi un historique

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

Discussions similaires

  1. Requête paramétrée sur champ date
    Par Gilles93 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 06/10/2016, 09h54
  2. Requête SQL sur champ DATE
    Par SIADIDL dans le forum SQL
    Réponses: 10
    Dernier message: 13/05/2014, 08h28
  3. requete Update sur champ date vide
    Par tarmo57 dans le forum Débuter
    Réponses: 10
    Dernier message: 28/04/2011, 19h01
  4. Réponses: 2
    Dernier message: 04/12/2010, 00h00
  5. Requête sur champ DATE
    Par bud_gw dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/12/2005, 13h18

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