编写SQL以满足我的要求

编写SQL以满足我的要求,sql,database,mysql,Sql,Database,Mysql,我已经努力解决这个问题很多天了。但我不会。请帮帮我 我需要一个SQL来列出日期范围内已售出的所有产品的产品代码、产品名称、已售出数量、上次订单日期(按售出数量排序) 我的表格结构: tbl_产品(产品id、产品代码、产品名称) tbl\U订单详细信息(订单项目id、订单id、产品id、数量) tbl_订单(订单id、订单日期)您可以使用分组方式来计算每个产品的统计信息。然后,您可以使用sum和max检索所需的聚合信息。例如: select p.product_code , p.pr

我已经努力解决这个问题很多天了。但我不会。请帮帮我

我需要一个SQL来列出日期范围内已售出的所有产品的产品代码、产品名称、已售出数量、上次订单日期(按售出数量排序)

我的表格结构:

tbl_产品(产品id、产品代码、产品名称)

tbl\U订单详细信息(订单项目id、订单id、产品id、数量)


tbl_订单(订单id、订单日期)

您可以使用
分组方式来计算每个产品的统计信息。然后,您可以使用
sum
max
检索所需的聚合信息。例如:

select  p.product_code
,       p.product_name
,       sum(od.quantity) as qty_sold
,       max(o.order_date) as last_order_date
from    tbl_product p
join    tbl_order_detail od
on      p.product_id = od.product_id
join    tbl_order o
on      od.order_id = o.order_id
where   o.order_date between '2010-01-01' and '2010-02-01'
group by
        p.product_code
,       p.product_name
order by
        sum(od.quantity) desc
对不起,我现在不能测试这个

关键点是:使用group by子句聚合数量和订单日期值,并使用max和sum查找所需的值

:first_day:和:last_day:是实际值的占位符


希望我能帮助你

这看起来像是一个典型的课程作业。如果我完全没有抓住要点,我很抱歉,但我怀疑你可能希望我们为你做一项作业。你能发布你到目前为止提出的SQL吗?你尝试了什么(发布了一些代码),出了什么问题?@Jocke-给出这样一句话“我已经尝试解决这个问题很多天了。但是不会”意味着他们根本没有尝试过。。。要么是这样,要么就是翻译过程中失去了意义:)tanx andomar。如果你能详细解释一下查询,那将更有帮助。。。
select
    p.product_code, p.product_name, sum(od.quantity) as qty_sold, max(o.order_date) as last_order_date
from tbl_product p join tbl_order o join tbl_order_detail od on
    (p.product_id=o.product_id, o.order_id = od.order_id)
where
    order_date between :first_day: and :last_day:
group by product_code, product_name
order by last_order_date