J'ai une table #temp
avec les détails de la command par exemple
OrderID CustomerID DeliveredBy 1 10 12 2 13 14 3 15 14
J'ai une variable de table @Orders
(qui à ce stade contient seulement des numéros de command spécifiques – mais pas d'ID de Customers of DeliveryDetails) avec des colonnes:
OrderID CustomerName DeliveredByName 1 2 3
(Ceci est juste un exemple de la situation)
J'ai besoin de mettre à jour la table @Orders
avec le CustomerName,DeliveredByName
avec les ID qui se trouvent dans la table #temp
Update @Orders set CustomerName = c.Name, DeliveredByName = d.Name from @Orders o1 join #temp t on o1.OrderID = t.OrderID left join Customers c on o1.CustomerID = c.CustomerID left join DeliveryDetails d on o1.DeliveredByID = d.DeliveredByID
Mais obtenez l'erreur:
Une expression de type non boolean spécifiée dans un context où une condition est attendue, près de 'update'.
Puisque vous avez spécifié un alias à @orders
, vous devez l'utiliser dans la clause update, sinon supprimer cet alias. Essayez ceci à la place:
UPDATE o1 <-------- here use UPDATE o1 instead of UPDATE @orders SET o1.CustomerName = c.Name, o1.DeliveredByName = d.Name FROM @Orders AS o1 INNER JOIN #temp AS t ON o1.OrderID = t.OrderID LEFT JOIN Customers AS c ON o1.CustomerID = c.CustomerID LEFT JOIN DeliveryDetails AS d ON o1.DeliveredByID = d.DeliveredByID;