I'll start by telling you that, by asking this question, you are indicating a fundamental lack of understanding of your basic issue that will almost certainly lead you into difficulties. Without something to indicate that a sale has already been applied, you have nothing to stop such an update from being repeated inappropriately. In many cases too, it is unnecessary to update data in place when the result can be calculated from the existing data (See
Database Normalisation and Table Structures).
Next, as it's also very important, you never want to use string values to identify items. It gets messy and easily and frequently leads to problems where things are similar but not recognised as the same due to hard to notice differences. In short, it's never a good idea.
All that said, the simple SQL structure of such a command is :
-
UPDATE [tblInventory] AS [tI]
-
INNER JOIN
-
[tblSales] AS [tS]
-
ON tI.ProductName = tS.ProductName
-
SET tI.Quantity = tI.Quantity - tS.QuantitySold