如何编写对应于该表的mysql查询

如何编写对应于该表的mysql查询,mysql,Mysql,嗨,数据库专家。我需要你的帮助 这是我的数据库表 我想得到这个结果 如何编写select查询以获得该结果 我编写了这个查询,但它的运行速度非常慢(20分钟) 在上询问此问题,因为这与数据库有关。只需返回一个分组有序列表,并在“表示层”/“应用程序级代码”中处理表示逻辑。我认为在此处询问DDL(选择更新删除等)相关问题应该可以。 SELECT c.name, p.title, tbl1.count, tbl1.sum,tbl2.count_1, tbl2.sum_1, tbl3.count

嗨,数据库专家。我需要你的帮助

这是我的数据库表

我想得到这个结果

如何编写select查询以获得该结果

我编写了这个查询,但它的运行速度非常慢(20分钟)


在上询问此问题,因为这与数据库有关。只需返回一个分组有序列表,并在“表示层”/“应用程序级代码”中处理表示逻辑。我认为在此处询问DDL(选择更新删除等)相关问题应该可以。
SELECT  c.name, p.title,  tbl1.count, tbl1.sum,tbl2.count_1, tbl2.sum_1, tbl3.count_2, tbl3.sum_2
FROM `client` c LEFT JOIN        
(SELECT c.name, p.id, p.title,p.unit,  o.client_id,  COUNT(*) AS `count`, SUM(op.price) AS `sum`
 FROM `order` o INNER JOIN order_product op ON o.id = op.order_id
        INNER JOIN product p ON op.product_id = p.id    
        INNER JOIN `client` c ON c.id = o.client_id
  WHERE MONTH(o.date) = MONTH('2013-07-01') AND YEAR(o.date) = YEAR('2013-07-01') AND p.category_id = 1
 GROUP BY c.id, p.id,  YEAR(o.date), MONTH(o.date)) AS tbl1 ON c.id = tbl1.client_id 
LEFT JOIN 
(SELECT p.id, p.title,p.unit, c.name, o.client_id, COUNT(*) AS `count_1`, SUM(op.price) AS `sum_1`
        FROM `order` o INNER JOIN order_product op ON o.id = op.order_id
        INNER JOIN product p ON op.product_id = p.id
        INNER JOIN `client` c ON c.id = o.client_id
        WHERE MONTH(o.date) = MONTH(DATE_ADD('2013-07-01', INTERVAL 1 MONTH)) AND 
                YEAR(o.date) = YEAR(DATE_ADD('2013-07-01', INTERVAL 1 MONTH))   AND p.category_id = 1                           
        GROUP BY c.id, p.id,  YEAR(o.date), MONTH(o.date)) AS tbl2 ON c.id = tbl2.client_id
LEFT JOIN           
(SELECT p.id, p.title,p.unit, c.name, o.client_id, COUNT(*) AS `count_2`, SUM(op.price) AS `sum_2`
        FROM `order` o INNER JOIN order_product op ON o.id = op.order_id
        INNER JOIN product p ON op.product_id = p.id    
        INNER JOIN `client` c ON c.id = o.client_id 
        WHERE MONTH(o.date) = MONTH(DATE_ADD('2013-07-01', INTERVAL 2 MONTH)) AND 
                YEAR(o.date) = YEAR(DATE_ADD('2013-07-01', INTERVAL 2 MONTH))   AND p.category_id = 1           
        GROUP BY c.id, p.id,  YEAR(o.date), MONTH(o.date)) AS tbl3 ON c.id = tbl3.client_id
        , product p
WHERE (tbl1.id = p.id OR tbl2.id = p.id OR tbl3.id = p.id)

ORDER BY c.name