2010-01-17 3 views
1

J'ai une table où je capture des liens de référence. J'ai une autre table qui contient le nom d'hôte lorsqu'un lien de référence est inséré (les doublons ne sont pas autorisés dans la table des hôtes, donc si elle existe déjà, l'ID est extrait de la table des hôtes de référence). Sont les structures Héré de table:Mettre à jour l'ID de table à partir de la même valeur dans une autre table avec SQL 2008

Referal Table: 
referalTableID 
referalLink 
referalHostID (FK from the referal host table) 

Referal Host Table: 
referalHostID 
ReferalHostName 
ReferalHostDisplayName 

Il y avait une erreur dans mon applcaiton où le referalHostID n'a pas été s'ajoutée à la table Referal. Je dois donc mettre à jour manaully la table de référence avec l'ID correct. J'ai besoin de mettre à jour la table de référence avec l'ID correct de la table d'hôte de référence. J'ai commencé avec quelques SQL comme ceci:

;with RHTable as (
Select * from ReferalHostTable) 

Update ReferalTable Set referalHostID = (
Select referalHostID from RHTable, ReferalHostTable where ReferalHostTable link '%' + RHTable.ReferalHostName + '%') 

Ce ne fonctionne pas becuase plusieurs valeurs continuent à être sélectionnés dans la sous requête. Je comprends un peu pourquoi, mais quelqu'un a-t-il une meilleure solution?

Merci

Répondre

1

devrait être quelque chose semblable à ceci:

Update r 
Set r.referalHostID = h.referalHostID 
from ReferalTable r 
inner join ReferalHostTable h 
    on r.referalLink like '%' + h.ReferalHostName + '%' 
where r.ReferalHostID is null 
    or r.referalHostID <> h.referalHostID 
+0

Parfait !!!!!! Merci beaucoup!!! – DDiVita

1

Il est inquiétant que vous êtes correspondant à l'aide de noms d'hôtes % de chaque côté. Cela donnera toutes sortes de faux positifs. Par exemple, meta.stackoverflow.com correspondra stackoverflow.com.

+0

Les sous-domaines sont traités différemment dans notre système. J'apprécie cependant la pensée! – DDiVita

Questions connexes