J'ai besoin de mettre à jour la table one
en utilisant les données de la table two
. Les tableaux un et deux ne sont liés par aucune colonne commune. La table three
est liée à la table two
.
Ex: table un (table reg_det)
reg_det_id | reg_id | results
101 | 11 | 344
table deux: (table temp)
venue | results
Anheim convention center | 355
Tableau trois (regmaster-tbl)
reg_id| venue
11 | Anaheim convention center
J'ai besoin de mettre à jour la colonne des résultats du tableau un en utilisant les données du tableau deux. Mais les tableaux un et deux ne sont pas liés. Les tableaux deux et trois et les tableaux un et trois sont liés comme vous pouvez le voir ci-dessus. Quelqu'un peut-il suggérer des idées! J'ai besoin que la valeur des résultats soit 355 dans le tableau un et ces données proviennent du tableau 2, mais ces deux-là ne sont pas liés et peuvent être liés à l'aide du tableau trois. Désolé si c'est déroutant!
Assez simple:
UPDATE T1
SET result = t2.results
FROM [table one] T1
INNER JOIN [table three] t3
on t1.reg_id = t3.reg_id
INNER JOIN [table two] T2
on t2.venue = t3.venue
Presque une question au lieu d'une réponse. :)
Ne pourriez-vous pas utiliser une jointure interne implicite?
UPDATE rd
SET rd.results = tt.results
FROM reg_det rd, regmaster rm, temptable tt
WHERE rm.reg_id = rd.reg_id
AND rm.venue = tt.venue;
Je le trouve plus facile à lire, et cette syntaxe fonctionne dans une instruction SELECT
, avec la même signification qu'une jointure interne explicite.
Essaye ça:
UPDATE rd
SET rd.results = t.results
FROM reg_det rd
JOIN regmaster rm ON rm.reg_id = rd.reg_id
JOIN temptable t ON t.venue = rm.venue
WHERE t.results = 355
J'ai ajouté une clause WHERE car sinon, elle mettra à jour tous les enregistrements reg_det qui ont des correspondances dans regmaster et tentables.