2010-09-30 5 views
1

MISE À JOUR: Ajout de plus Employee et ReplacementEmployeeAide avec la requête d'insertion qui remplace un identifiant d'origine avec une valeur différente en sql?

Tableau Employee -

EmployeeId SerialNo 
----------------------------- 
1    11111 
34   23233  
23   13234 

Tableau ReplacementEmployee -

ReplacementId SerialNo 
----------------------------- 
11   11111 
23   23233  
13   13234 

Alors, quand je me joins à ces tables sur le numéro de série ont quelque chose comme ça Mapping Table -

EmployeeId ReplacementId 
----------------------------- 
1    11  
34   23  
23   13 

Alors maintenant, j'insérer toutes les données de la table quelque chose comme ça OrignalTable et il peut avoir plusieurs valeurs pour EmployeeId-

EmployeeId Name 
----------------------------- 
1    AAA  
34   BBB  
23   CCC 
1    AAA 

dans une table avec différents schéma avec essentiellement quelque chose comme ça InsertTable et il peut ont plusieurs valeurs pour EmployeeId-

ReplacementId  Name 
------------------------------- 
11    AAA 
23    BBB 
13    CCC 
11    AAA 

donc, si vous regardez le problème que je dois insert les données d'une table à l'autre, mais je dois insérer un champ différent-à-dire dans ce cas j'ai besoin pour insérer le correspondingReplacementId au lieu du EmployeeId dans la nouvelle table. Donc, quelqu'un peut me suggérer comment je pourrais écrire une telle requête?

+1

Pourquoi y at-il les entrées en double dans une table d'employés, et pourquoi voulez-vous continuer à dupliquer les employés? – LittleBobbyTables

+0

J'ai mis à jour ma question avec quelques informations supplémentaires. – Vishal

Répondre

2

Essayez ceci:

INESRT INTO InsertTable (ReplacementID, [Name]) 
SELECT R.ReplacementID, O.[Name] 
FROM OriginalTable O 
INNER JOIN Employee E ON E.EmployeeID = O.EmployeeID 
INNER JOIN ReplacementEmployee R ON E.SerialNo = R.SerialNo 

Et si vous voulez une seule instance de chaque employé dans le InsertTable, utilisez SELECT DISTINCT à la place