Sql 如何使左連接滿足兩個條件(on子句)
---2008
Sql 如何使左連接滿足兩個條件(on子句),sql,sql-,sql--2008,Sql,Sql ,Sql 2008,當我編寫下面的查詢時,該消息返回Msg 512,16級,狀態1,第1行子查詢返回了多個值。當子查詢在=、!=、=或者當子查詢用作表達式時如何解決它請 PD., PD., PDCI.,PD., PD., P.,P., P., P.,P.
當我編寫下面的查詢時,該消息返回
Msg 512,16級,狀態1sql查詢條件左連接,第1行子查詢返回了多個值。當子查詢在=、!=、=或者當子查詢用作表達式時
如何解決它請
SELECT PD.ProductID, PD.DesignID, PDCI.ColorID,
PD.TotalPrice, PD.PictureName, P.ProductTitle,
P.Quantity, P.Availability, P.TodayDeal,
P.NewArrival, P.Bestseller, P.Likes,
P.CreatedOn, D.Name, PDCI.ColorImage
FROM [Diwan].tbProductDesigns PD
LEFT JOIN [Diwan].tbProducts P
ON P.ProductID = PD.ProductID
LEFT JOIN [Design].tbDesignCover D
ON D.DesignID = PD.DesignID
LEFT JOIN [Diwan].tbProductDesignColorImages PDCI
ON PDCI.ProductID = PD.ProductID
AND PDCI.DesignID = PD.DesignID
WHERE PD.DesignID = 2
來自注釋:總價是使用此函數計算的列:
ALTER FUNCTION [dbo].[fnTotalProductPrice] (
@ProductID BIGINT,
@DesignID BIGINT
)
RETURNS MONEY
AS
BEGIN
RETURN (
SELECT P.Price + D.SellingPrice
FROM Diwan.tbProductDesigns PD
LEFT JOIN Diwan.tbProducts P ON PD.ProductID = P.ProductID
LEFT JOIN Design.tbDesignCover D ON PD.DesignID = D.DesignID
WHERE PD.ProductID = @ProductID
AND PD.DesignID = @DesignID
)
END
我不明白為什么這個功能是必要的:
SELECT PD.ProductID, PD.DesignID, PDCI.ColorID,
(P.Price + D.SellingPrice) AS TotalPrice, PD.PictureName, P.ProductTitle,
P.Quantity, P.Availability, P.TodayDeal,
P.NewArrival, P.Bestseller, P.Likes,
P.CreatedOn, D.Name, PDCI.ColorImage
FROM [Diwan].tbProductDesigns PD
LEFT JOIN [Diwan].tbProducts P
ON P.ProductID = PD.ProductID
LEFT JOIN [Design].tbDesignCover D
ON D.DesignID = PD.DesignID
LEFT JOIN [Diwan].tbProductDesignColorImages PDCI
ON PDCI.ProductID = PD.ProductID
AND PDCI.DesignID = PD.DesignID
WHERE PD.DesignID = 2
您的查詢沒有子查詢。因此,錯誤語句似乎非常不可能出現。您是從視圖中選擇了任何對象,還是遺漏了部分查詢?您發布的代碼不會給出該錯誤。除非有任何計算列在使用中sql查詢條件左連接,或者任何源代碼在視圖中隱藏了代碼。 是計算列,請使用該列中的函數。這就是原因?是的,這可能會導致它。是計算列,希望它自動插入插入到哪里?您是說這不會返回正確的
TotalPrice
值嗎?