我必須寫一個複雜的查詢,但不能弄明白SQL語法複雜的場景(交易)
這裏是我的表
銷售--one行每個售價在對系統進行
SaleProducts --one列在發票的每一行(類似於NW訂單明細)
優惠--a可能的交易清單/提供了銷售可能有權
DealProducts的產品數量--a名單必須購買,以獲得交易
現在我嘗試做一個查詢,這將告訴我的每一個交易出售他可能會得到
相關領域有:
銷售:SaleID(PK)
SaleProducts: SaleID(FK),產品ID(FK)
優惠:DealID(PK)
DealProducts:DealID(FK),產品ID(FK),Mandatories(INT)所需數量
我相信我應該能夠使用某種交叉連接或外連接,但它不是工作
這裏是(約30事情,我試過)一個樣本
SELECT DealProducts.DealID, DealProducts.ProductID, DealProducts.Mandatories,
viwSaleProductCount.SaleID, viwSaleProductCount.ProductCount
FROM DealProducts
LEFT OUTER JOIN viwSaleProductCount
ON DealProducts.ProductID = viwSaleProductCount.ProductID
GROUP BY DealProducts.DealID, DealProducts.ProductID, DealProducts.Mandatories,
viwSaleProductCount.SaleID, viwSaleProductCount.ProductCount
的問題在於它沒有顯示任何未完成的產品交易(可能是因爲ProductID加入)。我需要一個銷售也沒有要求顯示出來,那麼我就可以過濾掉存在於這個查詢where AmountBought < Mandatories
等
謝謝您的幫助
嗨 感謝您的回答和如此之快! 我相信你的查詢在功能上等同於 SELECT sp.SaleID,sp.ProductID,sp.ProductCount,dp.DealID,dp.ProductID AS Expr1,dp。(選擇SaleID,ProductID,COUNT(SaleProductID)AS ProductCount FROM SaleProducts GROUP BY ProductID,SaleID)AS sp LEFT OUTER JOIN(SELECT DealID,ProductID,Mandatories FROM DealProducts)AS dp ON sp.ProductID = dp.ProductID ill continue在接下來的評論(這些短) – 2010-06-07 14:04:14
他們返回相同數量的行。銷售表和交易表並不真的有我們現在的任何重要信息。所以他們可以被排除在外。現在這仍然有一個缺點。如果我有DealProduct行可以說DealID = 5,ProductID = 7。現在如果一個角蛋白銷售(允許說id = 1)沒有任何SaleProducts with productid = 7,那麼它不會在此查詢中顯示,並且我永遠不會知道該銷售沒有資格處理5 – 2010-06-07 14:08:15
如果您的加入被放入一起合適,然後銷售將顯示和交易信息將爲空。讓我看看我是否可以根據它所顯示的內容拼湊出更新後的查詢。 – AlexCuse 2010-06-07 18:43:22