2015-06-22 226 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); 

我認爲這是你在找什麼。