我有三个MySQL表:MySQL的加入三个表,项目的总和加入到主表
例如
的表菜单ID,姓名
乙表是CUSTOMER_ORDER ID,order_date
C表为order_item ID,menu_item_id,customer_order_id,order_quantity
我尝试输出名称,总和(order_quantity)在本月
目前我有工作确定两个单独的查询,但第二个查询foreach循环,这似乎不是那么好内。
首先查询其输出所有的菜单项:
$results = $wpdb->get_results("SELECT * FROM menu WHERE post_id = $pid ORDER BY sort_order ");
第二个查询将输出总每个月每个销售项目:
$total = $wpdb->get_col("SELECT SUM(oi.order_item_quantity)
from order_item as oi
INNER JOIN customer_order as ho ON ho.ID = oi.order_id
WHERE oi.order_item_id = $subC->ID AND YEAR(ho.order_date) = $current_year AND MONTH(ho.order_date) = $current_month ");
我尝试这两个查询合并为一个查询,这整整一天,但仍然无法解决它,任何人都可以给我一些帮助。
更新
感谢刘若英。
Select m.name, m.name as name, sum(oi.order_item_quantity) as sold_monthly from menu as m left join order_item as oi on oi.order_item_id = m.ID left join cusomter_order as co on co.ID = oi.order_id where m.post_id = 110 group by m.ID, m.name
这将输出
name sold_monthly
Sushi Lunch Special NULL
Sushi Lunch 19
Sashimi Lunch 61
jason NULL
egg roll NULL
如果我添加YEAR(co.order_date) = 2016 AND MONTH(co.order_date) = 9
我只得到
name sold_monthly
Sushi Lunch 7
Sashimi Lunch 14
我怎能寿司午餐特,杰森,蛋卷,该空项目,当我添加YEAR(co.order_date) = 2016 AND MONTH(co.order_date) = 9.
在这里,我尝试
(year(co.order_date) = 2016 and month(co.order_date) = 10) or sold_monthly is null
这给我一个查询错误
更新 感谢刘若英再次
它的工作现在
(year(co.order_date) = 2016 and month(co.order_date) = 10) or co.order_date is null
最终解决它,上当我改变时,有小错误business_id可能无法捕捉到我想要的结果,所以我将其添加到子查询中。
Select m.*, p.sold_monthly from menu as m left join (SELECT SUM(oi.order_item_quantity) as sold_monthly, oi.order_item_id as ID, oi.order_item_name from order_item as oi LEFT JOIN cusomter_order as ho ON ho.ID = oi.order_id WHERE ho.business_id = $pid AND (year(ho.order_date) = $current_year and month(ho.order_date) = $current_month) OR ho.order_date is NULL GROUP by oi.order_item_id)p on p.ID = m.ID where m.post_id = $pid
样本数据和期望的结果将极大地帮助解释您正在尝试做什么。 –