Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/11/2010, 19h05   #1
Invité régulier
 
Inscription : octobre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 35
Points : 7
Points : 7
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 :
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)
sql_bin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 19h26   #2
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 513
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 513
Points : 3 953
Points : 3 953
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 !!!
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 20h50   #3
Invité régulier
 
Inscription : octobre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 35
Points : 7
Points : 7
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
sql_bin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 21h27   #4
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 513
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 513
Points : 3 953
Points : 3 953
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...
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 23h42   #5
Invité régulier
 
Inscription : octobre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 35
Points : 7
Points : 7
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
sql_bin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 10h52   #6
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 135
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 135
Points : 2 461
Points : 2 461
Envoyer un message via Yahoo à zinzineti
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 :
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 :
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+
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 18h09   #7
Invité régulier
 
Inscription : octobre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 35
Points : 7
Points : 7
Bon ce que j'ai pu trouver comme solution c'est cela:

Code :
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
sql_bin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h15.


 
 
 
 
Partenaires

Hébergement Web