mysql某个表求和语句_MySQL查询-对一个相关表求和-对另一个相关表进行计数

bd96500e110b49cbb3cd949968f18be7.png

The Count works fine with one related table, but when I add the Sum I get overinflated results in the Count.

SELECT Orders.kp_OrderID AS `Order #`,

Orders.t_ServiceLevel AS `Service Level`,

Customers.t_CustCompany AS Company,

Orders.t_JobName AS `Job Name`,

Orders.t_JobStatus AS `Status`,

Orders.d_JobDue AS Due,

Orders.ti_JobDue AS Time,

COUNT(OrderItems.kf_OrderID) AS `Line Item`,

SUM(

`OrderItemComponents`.`n_QuantityPrintMaterial` * (

`OrderItemComponents`.`n_WidthInInches` * `OrderItemComponents`.`n_HeightInInches` / 144

)

) AS SqFt,

Orders.nb_JobFinished AS Finished

FROM Orders

INNER JOIN OrderItems ON Orders.kp_OrderID = OrderItems.kf_OrderID

INNER JOIN Customers ON Orders.kf_CustomerID = Customers.kp_CustomerID

INNER JOIN OrderItemComponents ON OrderItemComponents.kf_OrderID = Orders.kp_OrderID

WHERE Orders.d_JobDue > (

DATE_SUB(CURDATE(), INTERVAL 60 DAY)

)

GROUP BY Orders.kp_OrderID

ORDER BY `Line Item` DESC

解决方案

Switch your COUNT line to:

COUNT(DISTINCT OrderItems.kf_OrderID) AS `Line Item`

When adding the line

INNER JOIN OrderItemComponents

ON OrderItemComponents.kf_OrderID = Orders.kp_OrderID

you returned many more rows since an OrderItem can, I assume, contain multiple components.

UPDATE

Try using this in place if your COUNT statement:

(SELECT COUNT(OrderItems.kf_OrderID)

FROM OrderItems.kf_OrderID

WHERE OrderItems.kf_OrderID=Order.kf_OrderID) AS `Line Item`,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值