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

MS SQL Server Discussion :

Mise à jour données selon table de correspondance


Sujet :

MS SQL Server

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Mise à jour données selon table de correspondance
    Bonjour

    J'ai une table temporaire dont le contenu des colonnes "Parametre 1 & 2" ont des valeurs entières :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #TABLE_TMP
    Etape	Parametre 1	value 1	parametre 2	value 2
    1	    1	               10	      1	                10
    2	    3	               10	      3	                10
    3	    4	               10	      4	                10
    4	    5	               10	      5	                10
    5	    6	               10	      6	                10
    6	    5                   	  10	      5	                10
    7	    6	               10	      6	                10
    8	    2	               10	      2	                10
    À côté j'ai une table de correspondances :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	Parametre 1	                       parametre 2
    1	chargement	                       durée etape
    2	dechargement	                       duree test
    3	attente	                                    etage
    4	attente/dechargement	          bouchage
    5	action	                                    attente
    6	temporisation	                        retour
    Je souhaite, mettre a jour ma table temporaire #TABLE_TMP en remplaçant le contenu de mes colonnes "Parametre 1 & 2" par le string correspond

    Exemple :
    etape 1, j'ai param1 = 1 et param2 = 1
    je souhaite avoir au final,
    etape 1, param1 = chargement
    param2 = durée etape


    Merci d'avance pour votre retour.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Qu'avez-vous essayé ?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour

    Je n'ai aucune idée de quelle commande. Quelles commandes utilisées?

    J'avais essayé la commande REPLACE; mais je dois dans un premier temps créer une table temporaire et après est il possible de changer le type de colonne (passer de INT en nvarhar?)

    Merci d'avance

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Les fonctions REPLACE ou UPDATE fonctionnent elles sur de stables temporaires?

  5. #5
    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 : 43
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    mais je dois dans un premier temps créer une table temporaire et après est il possible de changer le type de colonne (passer de INT en nvarhar?)
    Pourquoi avez-vous besoin de créer une table temporaire ?

    Pareillement, pourquoi utiliser le type nvarchar ?
    Celui-ci vous permet de stocker tous les caractères supportés par la norme Unicode, mais en contrepartie, il vous en coute deux octets au lieu d'un en varchar, qui ne supporte que les caractères de l'alphabet latin
    Cela est sans compter également la complexité de la comparaison de chaînes ...

    Toute opération de manipulation de données est faisable sur une table temporaire comme sur une table de base.
    Vous pouvez donc tout à fait exécuter un ordre ALTER TABLE sur une table temporaire.

    Finalement, votre lot devrait ressembler à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    ALTER TABLE #TABLE_TMP
    ALTER COLUMN Parametre1 varchar(32)
    GO
     
    ALTER TABLE TABLE #TABLE_TMP
    ALTER COLUMN Parametre2 varchar(32)
    GO
     
    UPDATE        #TABLE_TMP
    SET        Parametre1 = C.Parametre1
    FROM        #TABLE_TMP AS T
    INNER JOIN    table_correspondance AS C ON CAST(T.Parametre1 AS varchar(32)) = C.ID
     
    UPDATE        #TABLE_TMP
    SET        Parametre2 = C.Parametre2
    FROM        #TABLE_TMP AS T
    INNER JOIN    table_correspondance AS C ON CAST(T.Parametre2 AS varchar(32)) = C.ID
    Tout cela est bien compliqué et montre que votre base de données est mal modélisée, ce qui vous fait perdre un temps énorme et vous conduira tôt ou tard a des problèmes de performance ...

    La fonction REPLACE vous permet de remplacer un caractère ou un jeu de caractères par un autre

    @++

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/04/2009, 16h32
  2. [MySQL] Mise à jour d'une table de base de données
    Par mannix2 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/08/2008, 18h47
  3. [SQL] Ajout de données et Mise à jour d'une table
    Par wonga dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 31/07/2007, 16h01
  4. Réponses: 3
    Dernier message: 18/07/2007, 17h20
  5. Réponses: 7
    Dernier message: 16/01/2007, 15h54

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