【发布时间】:2014-11-12 10:53:06
【问题描述】:
我在为商店统计信息创建高效的 sql 查询时遇到问题。我有三个表:categories、product_categories 和 orders_products。
表类别 - 包含类别列表和结构看起来像(短版):
id
name
表product_categories - 包含产品和类别之间的联系。简写结构:
id
product_id
category_id
表 orders_products - 包含在商店出售的所有产品。结构如下:
id
product_id
price
quantity
我想要做的是显示当前类别的类别名称和已售商品价值的表格。
当我有超过 2000 个类别,每个类别中有 20 多个项目和许多已售商品时,就会出现问题。
我试过了:
1) 在一个简单的查询中获取所有类别
2) Foreach 他们(在 php 中)并为 products_categories 和 orders_products 使用 join
SELECT orders_products.id,orders_products.product_price_gross,orders_products.product_qty,orders_products.option_price,orders_products.rebate
FROM product_categories
LEFT JOIN orders_products
ON product_categories.product_id = orders_products.product_id
3) Foreach 的结果是 php 和 sum 值
4) 显示结果
5) 效果 - 当 foreach 中超过 50 个类别时挂起 db。
我不知道如何优化对这么多数据的查询。我希望你能帮助我,因为我不太擅长加入。
亲切的问候 标记
【问题讨论】: