2017-09-15 4 views
0

J'ai essayé de comprendre comment créer une requête SQL pour mettre à jour la table principale si les valeurs existent à partir de 2 tables différentes?SQL - Comment mettre à jour la table Table si les valeurs existent à partir de 2 tables différentes?

exemple:

Table1 (Main) 
Employee Number 
Name 
First Name 
Document Name 
Filename 
Original fileName 
DL_Status 

Table 2 (list table) 
Employee Number 
Document Name 
Original Filename 

Table 3(DIR list) 
Original fileName 
created 
extension file name 

sortie: la DL_Status doit être marqué comme « terminé » et originale fileName sera alimentée à partir des entrées Table2 que si le nom du fichier d'origine existe dans le tableau 3?

+3

S'il vous plaît montrer quelques données qui explique votre logique. Votre question n'est pas claire pour moi. –

+0

Peut-être aussi envisager de se débarrasser de ce niveau de redondance des données – Magisch

+0

Nous voyons deux points d'interrogation, mais quelle est exactement votre question? – Sami

Répondre

0

Vous pouvez appliquer jointure sur Table2 et table3 puis écrire un script pour mettre à jour les données dans la table principale Remarque: Si les données sont mentionnées clairement, la réponse sera plus spécifique.

0

Essayez quelque chose comme ceci:

update table1 
set dl_status = a.dl_status, 
Original_Filename =a.Original_Filename 
from 
(select t2.Employee Number, 'Completed' as dl_status,t2.Original_Filename 
from table2 t2,table3 t3 
where t2.Original_Filename= t3.Original_Filename) a 
where a.Employee Number = table1.Employee Number 
0

Très probablement

UPDATE m 
SET [DL_Status] ='Completed', 
    [Original fileName] = f.[Original fileName] 
FROM [Main] m 
JOIN [list table] l ON l.[Employee Number] = m.[Employee Number] AND l.[Document Name] = m.[Document Name] 
JOIN [DIR list] f ON l.[Original fileName] = f.[Original fileName] 
-- optionally 
WHERE m.[DL_Status] <> 'Completed' OR m.[Original fileName] <> f.[Original fileName]