2009-12-11 5 views
1

Je suis en train d'entrer dans ce qui suit à un déclencheur UPDATE de QuoteItem:Besoin d'aide avec SQL JOIN à une fonction

UPDATE QuoteItem 
SET List = StyleItem.List, CostFactor = StyleItem.CostFactor, Cost = NULL 
FROM dbo.fn_GetQuoteItemListPrice(QuoteItem.ItemId, QuoteItem.RoomId) 
    AS StyleItem 
CROSS JOIN (QuoteItem JOIN INSERTED ON 
    QuoteItem.QuoteItemId = INSERTED.QuoteItemId) 
WHERE (INSERTED.List IS NULL) AND (INSERTED.ItemId IS NOT NULL) 

Je reçois l'erreur follwoing:

Msg 4104, Level 16, State 1, Procedure QuoteItem_UPDATE, Line 6 
The multi-part identifier "QuoteItem.ItemId" could not be bound. 
Msg 4104, Level 16, State 1, Procedure QuoteItem_UPDATE, Line 6 
The multi-part identifier "QuoteItem.RoomId" could not be bound. 

Répondre

0

réponse trouvée here par Naom i Nosonovsky:

UPDATE QuoteItem 
SET List = StyleItem.List, CostFactor = StyleItem.CostFactor, Cost = NULL 
FROM QuoteItem JOIN INSERTED AS INSERTED ON QuoteItem.QuoteItemId = 
    INSERTED.QuoteItemId 
    CROSS APPLY dbo.fn_GetQuoteItemListPrice(QuoteItem.ItemId, QuoteItem.RoomId) 
     AS StyleItem 
WHERE (INSERTED.List IS NULL) AND (INSERTED.ItemId IS NOT NULL) 
0
UPDATE QuoteItem 
SET List = StyleItem.List, CostFactor = StyleItem.CostFactor, Cost = NULL 
FROM dbo.fn_GetQuoteItemListPrice(xx.ItemId, xx.RoomId) 
    AS StyleItem 
CROSS JOIN (QuoteItem JOIN INSERTED ON 
    QuoteItem.QuoteItemId = INSERTED.QuoteItemId) xx 
WHERE (INSERTED.List IS NULL) AND (INSERTED.ItemId IS NOT NULL) 

Essayez la je change fait ci-dessus, l'attribution d'un xx alias de table et faisant référence au lieu ..

+0

Msg 102, Niveau 15, État 1, Procédure QuoteItem_UPDATE, ligne 13 syntaxe incorrecte près de 'xx'. – Shimmy

+0

Désolé, je n'ai pas SQL ouverte, mais essayez d'ajouter 1 = ON 1 après xx – Sparky

+1

Aussi, pourquoi avez-vous besoin joindre croix, pourriez-vous pas référence à la ItemID et RoomID directement à partir de la table inserted? – Sparky