【发布时间】:2012-11-28 14:50:07
【问题描述】:
我正在使用以下查询来获取一些销售数据。问题是它返回了错误的数据。
我将三个表连接在一起tbl_orderstbl_orderitemstbl_payment。 tbl_orders 表保存摘要信息,tbl_orderitems 保存订购的项目,tbl_payment 表保存有关订单的付款信息。每个订单可以多次付款。
我正在尝试获取物品的总和 sum(mon_orditems_pprice),以及售出物品的数量 count(uid_orderitems)。
当我针对特定订单号运行以下查询时,我知道该订单号有 1 个订单商品。它返回计数 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
【问题讨论】:
标签: sql sql-server-2008