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

Développement SQL Server Discussion :

Update recursif ?


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 60
    Par défaut Update recursif ?
    Bonjour,

    J'ai un probleme d'update en masse.
    Je m'explique :

    J'ai une table avec les colonnes suivantes
    Id | Date | Perf | Indice

    Je possède ma liste de Date | Perf
    Mais pour mettre à jour l'indice voici ce que je dois faire :

    Indice (0) de la première date = 100
    ensuite
    Indice (j) = Indice (j-1) * (1 + perf(j))

    Voici ce que j'ai tenter de faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    update tmp1
    set Indice = tmp2.Indice * (1 + tmp1.Perf)
    from #tmpPerf tmp1
    left join #tmpPerf tmp2 on tmp2.IDtmpMaxDrawDown = tmp1.IDtmpMaxDrawDown - 1
    Mais celle ma premiere ligne se met à jour.
    Que dois - je faire ? pour que l'update prenne en compte la mise à jour ligne par ligne

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Si vous êtes sous SQL Server 2005, calculez l'indice avec une expression de table commune récursive. Cela vous permettra ensuite de réaliser la mise à jour par jointure entre la clé de la table et la clé de l'expression de table commune récursive (qui sera aussi la clé de la table )

    Bannissez les tables temporaires, elles ne font que pourrir vos performances.

    @++

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 60
    Par défaut
    Je précise que je suis sous SQL Server 2000

  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 009
    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 009
    Billets dans le blog
    6
    Par défaut
    En v 2000 sans les CTE (récursivité) ni les fonctions de fenêtrage c'est impossible.
    Vous devez faire cela dans un CURSEUR FOR UPDATE.

    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/ * * * * *

Discussions similaires

  1. Requête update à partir d'une autre table
    Par amiral thrawn dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/02/2024, 12h40
  2. Update d'une table a partir d'un select recursif
    Par olibara dans le forum Langage SQL
    Réponses: 1
    Dernier message: 17/05/2008, 10h44
  3. [dBase]il y a mieux que la commande sql UPDATE ?
    Par sana72 dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/12/2002, 12h59
  4. Réponses: 3
    Dernier message: 10/11/2002, 12h03
  5. update et virgule
    Par Delph dans le forum Bases de données
    Réponses: 8
    Dernier message: 27/08/2002, 15h40

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