我最终会遇到这个(应该是简单的)问题。我想我已经完成了所有的努力工作(因为这个MySQL SELECT语句相当复杂恕我直言(无论如何)。
我试图从MySQL SELECT语句中获取两个关键数字字段的SUM值。我尝试过明显的变化,但是我无法从父查询可用的子查询中使字段值“Regs”执行类似...... SUM(Regs + Held)AS Total的操作。拜托,拜托,求助!
这是我的SQL代码......
SELECT p.product_id AS ID, FROM_UNIXTIME(p.cdate, '%c/%e/%y') AS CDate, FROM_UNIXTIME(p.mdate, '%c/%e/%y') AS MDate, p.product_sku AS SKU, s.mf_category_city AS Town, s.mf_category_county AS County, s.mf_category_state AS State, org.mf_name AS Org, s.mf_category_name AS Site, p.product_name AS ClassName, DATE_FORMAT(p.startDate, '%a %m-%d-%Y') AS StartDate, DATE_FORMAT(p.endDate, '%a %m-%d-%Y') AS EndDate, DATE_FORMAT(p.startTime, '%l:%i %p') AS StartTime, DATE_FORMAT(p.endTime, '%l:%i %p') AS EndTime, p.age_from, p.age_to, pr.product_price AS Price, CASE WHEN p.class_status = 0 THEN 'A' WHEN p.class_status = 1 THEN 'C' WHEN p.class_status = 2 THEN 'S' END AS Status, p.product_publish AS Published, p.precode AS Code, CASE WHEN p.product_refered = 'N' THEN 'USG' WHEN p.product_refered = 'Y' THEN 'REC' WHEN p.product_refered = 'B' THEN 'BOTH' END AS REC, p.class_target AS Target, (SELECT SUM(oi.product_quantity) FROM (jos_sport_childs_xrf AS scx) LEFT JOIN jos_vm_order_item AS oi ON scx.product_id = oi.product_id WHERE scx.product_id = p.product_id AND oi.order_status IN ('C','P') GROUP BY scx.child_id LIMIT 1) AS Regs, p.class_held AS Held, p.total_registrations AS Total, p.site_usage_fee AS Fee, p.player_usage_fee AS PlayerFee, p.player_usage_percent AS PlayerPercentage, u.name AS RD, p.product_desc AS Notes, CASE WHEN cxref.category_parent_id = 42 THEN 'USSI' WHEN cxref.category_parent_id = 98 THEN 'USSI' END AS Company, p.belongs_to AS BelongsTo, p.missdate1 AS Missdate1, p.missdate2 AS Missdate2, p.missdate3 AS Missdate3 FROM (jos_vm_product AS p) INNER JOIN jos_vm_manufacturer_category AS s ON p.venue = s.mf_category_id LEFT JOIN jos_vm_product_price AS pr ON pr.product_id = p.product_id INNER JOIN jos_users AS u ON p.user_id = u.id INNER JOIN jos_vm_product_category_xref AS x ON p.product_id = x.product_id INNER JOIN jos_vm_category_xref AS cxref ON x.category_id = cxref.category_child_id LEFT JOIN jos_vm_manufacturer AS org ON s.mf_category_org = org.manufacturer_id WHERE p.startDate BETWEEN '2015-03-02' AND '2015-06-14' AND x.category_id IN (102,120,99,106,104,94,59,84,105) AND u.id NOT IN (33731,46660)
Held具有简单的数值,SubQuery返回记录的SUM总值。
答案 0 :(得分:0)
让我们孤立地看一下子查询,没有相关参考,所以...
SELECT SUM(oi.product_quantity)
, scx.product_id
FROM jos_sport_childs_xrf scx
JOIN jos_vm_order_item oi
ON scx.product_id = oi.product_id
WHERE oi.order_status IN ('C','P')
GROUP
BY scx.child_id;
这里我们SELECT
product_id(我们这样做是因为我们知道我们以后会需要它),但我们GROUP BY
child_id。这是不好的。我们该怎么办呢?