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 :

Requête de mise à jour


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 32
    Points : 17
    Points
    17
    Par défaut Requête de mise à jour
    Bonjour,

    J'ai une table chargée de données à partir d'un fichier texte.
    Je n'ai donc pas de clé sur cette table et des enregistrements peuvent être identiques. Tous les champs sont des string sauf le dernier champ qui est un timestamp avec la valeur null.

    Quelle méthode (voir quelle(s) requête(s)) puis-je utiliser pour mettre à jour le timestamp des enregistrements identiques sauf un ?

    Par exemple, si j'ai trois enregistrements identiques, je dois mettre à jour le timestamp de deux des enregistrements.

    Merci d'avance pour vos suggestions.

  2. #2
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut,

    Alors, je suis pas sûr d'avoir compris, mais si sur les lignes identiques il y en a au moins un qui a un timestamp, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    UDPATE tatable a
    SET temps = 
      (SELECT max(temps)
       FROM tatable b
       WHERE a.champid = b.champsid
         AND b.temps is not null)
    WHERE a.temps IS NULL

  3. #3
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    ... et si sur ces doublons aucun n'a de timestamp, ça devient compliqué de tous les mettres à jour sauf un (s'ils sont totalement identique).

    Quel est ton SGDB dans ce cas ?
    Côté Oracle par exemple, tu peux te baser sur Rowid pour faire la différence...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Malheureusement sur ces doublons il arrive qu'aucun n'ai de timestamp.
    Le SGBD est SYBASE. Je vais regarder si Rowid est dispo.
    Pour le moment, afin de m'en sortir j'ai créer une boucle en java qui fait le boulot.

Discussions similaires

  1. Requête de mise à jour
    Par Daniel MOREAU dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/09/2006, 14h18
  2. Problème avec une requête de mise à jour
    Par Le Pharaon dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/07/2006, 12h16
  3. Requête de mise à jour
    Par Deejoh dans le forum Access
    Réponses: 4
    Dernier message: 24/05/2006, 12h02
  4. Réponses: 2
    Dernier message: 10/03/2006, 13h55
  5. Réponses: 6
    Dernier message: 29/11/2005, 19h36

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