オークションに複数の製品を含めることができるスクリプトに取り組んでいます。製品には通常価格があり、オークションのすべての製品について合計され、オークションの「パッケージ」通常価格として返されます。
私の問題は、テスト オークションの通常の価格が 150 ドルであるのに、クエリが 300 ドルを返すということです。これは、どこかで間違いを犯したことを意味します。私は一晩中解決策を見つけようとしましたが、うまくいきませんでした。誰も手がかりを持っていますか?
SELECT
a.AuctionName as A_name,
c.CategoryName as C_name,
a.AuctionEndDate as A_enddate,
a.AuctionOfferPrice as A_price,
SUM(p.ProductPrice) as A_normalprice,
s.StoreName as S_name
FROM A_Auctions a
RIGHT JOIN
A_Categories c
ON c.CategoryID = :category_id
INNER JOIN
P_ProductsAuctions ppa
ON ppa.Auct_AuctionID = a.AuctionID
RIGHT JOIN
P_Products p
ON p.ProductID = ppa.Prod_ProductID
RIGHT JOIN
P_Attributes pa
ON pa.Cate_CategoryID = c.CategoryID
RIGHT JOIN
P_AttributeValues pav
ON pa.AttributeID = pav.Attr_AttributeID
LEFT JOIN
S_Stores s ON a.Stor_StoreID = s.StoreID
WHERE
a.Cate_CategoryID = c.CategoryID
AND ((pa.InternationalName = 'param1' AND pav.AttributeValue = 'value1') OR (pa.InternationalName = 'param1' AND pav.AttributeValue = 'value2'))
AND ((pa.InternationalName = 'param2' AND pav.AttributeValue = 'value1') OR (pa.InternationalName = 'param1' AND pav.AttributeValue = 'value2'))
GROUP BY
p.ProductID, a.AuctionID, pa.AttributeID ORDER BY a.AuctionID DESC
LIMIT 0,20
これが私のテーブル構造です:
A_オークション:
AuctionID int(15)
AuctionName varchar(256)
AuctionDescription text
AuctionPicture text
AuctionOfferPrice decimal(15,2)
AuctionMinimumPrice decimal(15,2)
AuctionStartDate datetime
AuctionEndDate datetime
AuctionTimeInterval time
AuctionNextInterval datetime
AuctionPercentageChange decimal(5,2)
Cate_CategoryID int(15)
Prod_ProductID int(15)
Stor_StoreID int(15)
StUs_StoreUserID int(15)
date_added datetime
P_製品:
ProductID int(15)
ProductName varchar(256)
ProductDescription text
ProductPictureLink longtext
ProductPrice decimal(25,2)
ProductStatus int(3)
ProductGroupID int(15)
Cate_CategoryID int(15)
StUs_UserID int(15)
added_date datetime
P_ProductsAuctions (Auctions と Products 間の 1:Many 関係を格納):
Auct_AuctionID int(15)
Prod_ProductID int(15)
P_Attributes (製品のさまざまなバリエーションの表):
AttributeID int(15)
Auct_AuctionID int(15)
Cate_CategoryID int(15)
AttributeName varchar(256)
InternationalName varchar(256)
編集: - 問題は P_Attributes と P_AttributeValues のパラメーターにあるようです。クエリにパラメーターを 1 つ追加すると、価格が 150 ドル高くなるため、1 つのパラメーターで 300 ドル、2 つのパラメーターで 450 ドル、3 つのパラメーターで 600 ドル、すぐ...
編集2:
ここで SQLfiddle を見つけてください: http://sqlfiddle.com/#!2/d223f/1
編集3:
私の出力は次のようになります。
A_NAME -> テスト中
C_NAME -> テスト
A_ENDDATE -> 2012 年 9 月 9 日 22:00:00-0400
A_PRICE -> 250
A_通常価格 -> 150
S_NAME -> (ヌル)
前もって感謝します、
デンラウ。