我正在使用以下查詢獲取一些銷售數據。問題是它返回了錯誤的數據。使用SQL Server 2008連接表問題
我在一起加了三張表tbl_orders
tbl_orderitems
tbl_payment
。 tbl_orders
表包含彙總信息,tbl_orderitems
包含訂購的物品,tbl_payment
表包含有關訂單的付款信息。可以對每個訂單進行多次付款。
我想獲得項目sum(mon_orditems_pprice)
的總和,以及銷售項目的數量count(uid_orderitems)
。
當我運行以下查詢對特定訂單號,我知道有一個訂單項。它返回2的計數和兩個項目的總和。
Item ProdTotal ProdCount
Westvale Climbing Frame 1198 2
這項命令在tbl_payment
表,這是造成雙計數舉行了兩次付款記錄。如果我刪除了付款表,那麼它會報告正確的數字,或者如果我選擇了具有單一付款的訂單,它也會起作用。我錯過了什麼,我很累!!
SELECT
txt_orditems_pname,
SUM(mon_orditems_pprice) AS prodTotal,
COUNT(uid_orderitems) AS prodCount
FROM dbo.tbl_orders
INNER JOIN dbo.tbl_orderitems ON (dbo.tbl_orders.uid_orders = dbo.tbl_orderitems.uid_orditems_orderid)
INNER JOIN dbo.tbl_payment ON (dbo.tbl_orders.uid_orders = dbo.tbl_payment.uid_pay_orderid)
WHERE
uid_orditems_orderid = 61571
GROUP BY
dbo.tbl_orderitems.txt_orditems_pname
ORDER BY
dbo.tbl_orderitems.txt_orditems_pname
有什麼建議嗎?
謝謝。
下鑽表列
dbo.tbl_payment.bit_pay_paid (1/0) Has this payment been paid, yes no
dbo.tbl_orders.bit_order_archive (1/0) Is this order archived, yes no
dbo.tbl_orders.uid_order_webid (integer) Web Shop's ID
dbo.tbl_orders.bit_order_preorder (1/0) Is this a pre-order, yes no
YEAR(dbo.tbl_orders.dte_order_stamp) (2012) Sales year
dbo.tbl_orders.txt_order_status (varchar) Is the order dispatched, awaiting delivery
dbo.tbl_orderitems.uid_orditems_pcatid (integer) Product category ID
感謝您的回覆,mon_orditems_pprice來自'tbl_orditems'表。謝謝你的領導,雖然我會調整並報告回來。 –
您好Ivan,我正在使用付款表來深入瞭解哪些數據將包含在where語句中。 –
嗨,Jason。我在查詢中編寫它的方式不會再導致多行,但它也沒用(沒有數據或過濾正在執行,只是加入)。嘗試給出一個例子,你需要什麼樣的數據或從'tbl_payments'過濾... –