2015-06-22 227 views
0

我有一个查询,我想选择所有的订单与特定的product_id(说12,13)的客户。我为此做了一个小提琴。有一个包含order_id和customer_id的订单表。 Order_detail表具有order_id和product_id。这些是示例表。原始表格包含超过30000条记录。你能帮我优化查询或指导我这样做吗?优化SQL查询?

http://sqlfiddle.com/#!9/838da/3

回答

1

您可以使用下面的最终查询 -

SELECT customer_id,first_name 
FROM customer_detail cd 
JOIN orders ors ON cd.customer_id=ors.customer_id 
JOIN order_detail od ON od.order_id=ors.order_id 
WHERE product_id IN (12,13); 

注:以下字段应该索引 - CUSTOMER_ID订单表 ORDER_ID和PRODUCT_ID在order_detail表

+0

如果想客户之所重复的订单? –

+0

如何在过程中创建此视图以便我可以将其用于其他联接以从其他表中获取数据? –

+0

最后为多个客户使用customer_id组。 –

1
select c.* from customer_detail c 
inner join orders o on o.customer_id = c.customer_id 
inner join order_detail od on od.order_id = o.order_id 
where od.product_id in (12,13); 

我认为这是你在找什么。