2010-03-04 3 views
2

J'ai une table de produits, qui a un manufacturerID qui est actuellement -1 pour tous les produits.Mise à jour de la table des produits basée sur le préfixe sku

J'ai une table fabricant qui a un préfixe SKU.

Donc, si un préfixe sku MFG est: ABC

Ensuite, la table des produits aura des produits comme ABC123, ABC3434.

J'ai donc besoin d'une requête pour mettre à jour la table des produits, pour définir le manufacturerID basé sur skuPrefix dans la table Manufacturer.

est-ce possible?

Répondre

2

Ce qui précède devrait faire l'affaire. Quelques considérations cependant:

  • dans le cas d'une très grande table de produits, il peut être préférable d'effectuer ces mises à jour en petits lots [er], soit en introduisant une condition where (selon le modèle de récupération, ce peut éviter d'écraser le journal SQL trop)
  • la longueur du préfixe doit être définie, bien sûr, j'ai utilisé 3 à des fins d'illustration, on peut avoir besoin de 5 ou 8?
  • si en quelque sorte la longueur du préfixe est variable, on peut être en mesure d'utiliser
    ... (ON CHARINDEX(P.Sku, M.SkuPrefix) = 1)
    comme condition de jointure.
+0

vous voulez probablement Set P.manufacturerId = M.manufacturerID –

+0

@Russel. Merci de l'avoir signalé. Je ne pense pas que le spécificateur de table soit nécessaire ici (car il est implicite à la syntaxe 'UPDATE tableName'), mais cela ne ferait probablement pas de mal. – mjv

0
UPDATE tblProducts 
SET manufacturerId = M.manufacturerId 
FROM tblProducts P 
JOIN tblManufacturers M ON M.Sku + '%' LIKE P.sku 

devrait le faire

+0

Vous voulez probablement dire 'P.sku LIKE M.sku + '%'', pas l'inverse – mjv

Questions connexes