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 :

update depuis deux tables avec la même clé!


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 35
    Points : 21
    Points
    21
    Par défaut update depuis deux tables avec la même clé!
    Hello,
    je sais pas si c'est la fatigue ou mon ignorance de SQL mais je bloque sur un truc assez simple.

    J'ai une table (Tab1) tempo avec deux colonnes Col_A (Clé) et Col_B (Nom)
    je veux faire un Update pour récupérer le Nom (Tab1.Col_B) depuis deux autres tables Tab2 OU Tab3 les deux tables on la même structure que la Tab1 (Col_A (Clé) et Col_B (Nom))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (Tab1.Col_B= Tab2.Col_B OU Tab1.Col_B= Tab3.Col_B) 
    SI
     (Tab1.Col_A= Tab2.Col_A OU Tab1.Col_A= Tab3.Col_A)

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sql_bin Voir le message
    J'ai une table (Tab1) tempo avec deux colonnes Col_A (Clé) et Col_B (Nom)
    je veux faire un Update pour récupérer le Nom (Tab1.Col_B) depuis deux autres tables Tab2 OU Tab3 les deux tables on la même structure que la Tab1 (Col_A (Clé) et Col_B (Nom))
    J'espère pour toi que c'est un exemple parce que sinon bonne chance pour s'y retrouver avec des règles de nommage pareil!
    C'est sûr que Col_B, c'est bien plus pratique que nom !!!

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    MERCI POUR TA REPONSE RAPIDE JE VAIS LA TESTER ET REVENIR VERS TOI!!!!


    EXP:

    TAB_Objet:
    Col_ID | Col_Nom
    1 Vide
    2 Vide
    3 Vide
    a Vide
    b Vide

    TAB_INT:
    Col_ID | Col_Nom
    1 Chaise
    2 SDB
    3 Lampe




    TAB_EXT:
    Col_ID | Col_Nom
    a arbre
    b voiture
    ......

    resulta:

    TAB_Objet:
    Col_ID | Col_Nom
    1 Chaise
    2 SDB
    3 Lampe

    a arbre
    b voiture

  4. #4
    Invité
    Invité(e)
    Par défaut
    Si tu commençais par nous dire explicitement quel champ de quelle table tu veux mettre à jour ?
    Avec quelle valeur et dans quel cas?
    Là on pourra commencer à t'aider davantage...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    Si tu commençais par nous dire explicitement
    je vais essayer
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    quel champ
    Col_Nom
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    de quelle table tu veux mettre à jour ?
    Tab_Objet (qui sont vide dans mon exp)
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    Avec quelle valeur
    avec les colonnes Col_Nom de la Tab_int OU Col_nom de la Tab_ext
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    et dans quel cas?
    Si la clé est dans la première table on prendra le nom correspondant sinon celui de la deuxième table
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    Là on pourra commencer à t'aider davantage...
    Merci d'avance

  6. #6
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    Citation Envoyé par sql_bin Voir le message
    Hello,
    je sais pas si c'est la fatigue ou mon ignorance de SQL mais je bloque sur un truc assez simple.

    J'ai une table (Tab1) tempo avec deux colonnes Col_A (Clé) et Col_B (Nom)
    je veux faire un Update pour récupérer le Nom (Tab1.Col_B) depuis deux autres tables Tab2 OU Tab3 les deux tables on la même structure que la Tab1 (Col_A (Clé) et Col_B (Nom))
    j'espère que cet exemple peut t'aider
    Soient deux tables T1 et T2
    qui ont la même structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE [dbo].[T1](
    	[Id] [int] IDENTITY(1,1) NOT NULL,
    	[Nom] [varchar](100) NULL
    ) ON [PRIMARY]
    --Dans ce exemple je mets à jour la colonne T1.Nom avec les infos de la colonne T2.Nom
    --en me basant sur l'ID (colonne commune aux deux tables)
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    USE [MaBase]
    CREATE TABLE #Tmp (ID INT, NOM VARCHAR(100))
    INSERT INTO #Tmp (ID,NOM)  
    SELECT T2.Id,T2.Nom 
    FROM T2 INNER JOIN T1 ON T1.Id = T2.Id 
    ORDER BY T2.Id
     
    DECLARE @TraitementColonneID VARCHAR(50) 
    ,@TraitementColonneNOM VARCHAR(50)
    ,@SQL VARCHAR (max), @DEL VARCHAR (max)  
    WHILE EXISTS ( SELECT TOP 1 ID FROM #Tmp )
    BEGIN
    SET @TraitementColonneID = (SELECT TOP 1 ID FROM #Tmp)
    SET @TraitementColonneNOM = (SELECT TOP 1 NOM FROM #Tmp)
     
    SET @SQL = 'UPDATE T1 SET T1.Nom = '''+ @TraitementColonneNOM + ''' WHERE Id = '+ @TraitementColonneID + ';'  
    --PRINT (@SQL)
     EXEC (@SQL)  
    -- Supprimer la ligne traitée dans la table temporaire
    SET @DEL = 'DELETE FROM #Tmp WHERE ID = '''+ @TraitementColonneID + ''';'  
    --PRINT (@DEL)
    EXEC (@DEL) 
    END
     
    --Suppression de la table temporaire
    DROP TABLE #Tmp
    Du courage

    A+

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Bon ce que j'ai pu trouver comme solution c'est cela:

    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
    18
    19
    update TAB_Objet
    set TAB_Objet.Statut = TAB_INT.Status_Code
    from TAB_Objet
    inner join TAB_INT on  TAB_INT.Policy_Number=TAB_Objet.[N° de police]
    where
    TAB_Objet.Statut is null
    or
    TAB_Objet.Statut =''
    GO
     
    update TAB_Objet
    set TAB_Objet.Statut = TAB_EXT.Status_Code
    from TAB_Objet
    inner join TAB_EXT on  TAB_EXT.Policy_Number=TAB_Objet.[N° de police]
    where 
    TAB_Objet.Statut is null
    or
    TAB_Objet.Statut =''
    GO
    TAB_Objet:
    [N° de police] | Statut


    TAB_EXT:
    Policy_Number | Status_Code


    TAB_INT:
    Policy_Number | Status_Code

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/04/2010, 00h14
  2. Réponses: 7
    Dernier message: 14/02/2006, 10h33
  3. Croisement d'une table avec elle même
    Par lelapin dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/09/2005, 07h44
  4. [arborescence] jointure d'une table avec elle même ?
    Par Celelibi dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/11/2004, 18h48
  5. UPDATE d'une table avec test d'un champ d'une autre table
    Par delphim dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/05/2004, 12h30

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