我正在开发一个具有许多内联sql查询的访问应用程序,其语法与直接在ssms中执行的常规查询的语法非常相似,但存在一些差异。现在我遇到了一个我不太了解的更新查询。它在update语句之后立即使用内部联接,但ssms不喜欢构造此查询的方式。
我正在寻求帮助以了解如何正确转换查询,因为我根本不想更新错误的表。
这是没有转换的查询:
UPDATE Product
INNER JOIN
(
( Arrangement
INNER JOIN Publishers
ON Arrangement.PubKey = Publishers.BookPubKey
)
INNER JOIN Arrangement_Notation_File
ON Arrangement.ArrangementID = Arrangement_Notation_File.ArrangementID
)
ON Product.ProductID = Arrangement_Notation_File.ProductID
SET
Product.Title = [arrangement].[Title],
Product.ProductType = ProductType,
Product.ForSale = -1,
Product.IsDigital = -1,
Product.ListPrice = [Arrangement].[Price],
Product.PublicationDate = iif(isnull(FirstPublicationDate), iif(isnull(PublicationDate), '" & Now() & "', PublicationDate), FirstPublicationDate),
Product.SongID = Arrangement.SongID
WHERE (((Arrangement_Notation_File.ProductID)='" & ID & "'));
答案 0 :(得分:1)
如果您尝试以下内容怎么办?请注意,SET
和JOIN
已互换,并使JOIN
正确。
UPDATE P
SET
Product.Title = [arrangement].[Title],
Product.ProductType = ProductType,
Product.ForSale = -1,
Product.IsDigital = -1,
Product.ListPrice = [Arrangement].[Price],
Product.PublicationDate = iif(isnull(FirstPublicationDate), iif(isnull(PublicationDate), '" & Now() & "', PublicationDate), FirstPublicationDate),
Product.SongID = Arrangement.SongID
FROM Product P
INNER JOIN Arrangement_Notation_File ANF ON P.ProductID = ANF.ProductID
INNER JOIN Arrangement A ON A.ArrangementID = ANF.ArrangementID
INNER JOIN Publishers PU ON A.PubKey = PU.BookPubKey
WHERE ANF.ProductID ='" & ID & "';