Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
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 10/12/2011, 09h57   #1
Invité de passage
 
Homme
Inscription : juin 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : juin 2011
Messages : 3
Points : 0
Points : 0
Par défaut Copie de données d'une table vers une autre en récupérant les ID

Bonjour,

Quelle pourrait être la requête SQL à adopter pour réaliser la manipulation suivant ?

J'ai une table avec des doublons (oui ca a été mal fait au départ et je dois ratraper le tir...) que je dois insérer dans une autre.

Donc je fais INSERT INTO cible1 SELECT DISTINCT val1 FROM source

ca ca va... mais maintenant, je dois récupérer l'id de val1 dans cible1 SELECT id FROM cible1 WHERE val1 = valeur

sauf que valeur je le récupère d'un nouvel INSERT INTO cible2 SELECT DISTINCT x, y, z, valeur FROM source

la structure de cible2 est x, y, z, fk_id

Qqn aurait-il une idée ?

D'avance merci,
Nabu
NabuchodonosorII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 15h23   #2
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 670
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

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

Informations forums :
Inscription : janvier 2005
Messages : 4 670
Points : 8 732
Points : 8 732
Bonjour,

Sous réserve que val1 soit parfaitement unique (ce que vous devriez faire respecter par l'ajout d'une contrainte d'unicité), il vous faut écrire la requête UPDATE suivante :

Code :
1
2
3
4
5
UPDATE		dbo.cible2
SET		id = C2.id
FROM		dbo.cible2 AS C2
INNER JOIN	dbo.cible1 AS C1
			ON C2.val = C1.val
Celle ci va copier dans la colonne id de la table dbo.cible2 la valeur de id dans la table dbo.cible1, pour les valeurs de la colonne val qui sont égales dans les deux tables.

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h27.


 
 
 
 
Partenaires

Hébergement Web