2015-04-04 47 views
-2

我希望能夠列出所有訂單中的訂單項目是特定項目的所有訂單的每個訂單中已購買的所有項目。mysql將恢復訂購產品的訂單的所有詳細信息

例如:我希望能夠搜索番茄醬已訂購的所有訂單,並列出這些訂單中的所有產品。

因此,我希望能夠對所有購買番茄醬的顧客說,還有哪些其他產品伴隨着該項目。

它類似於你希望在任何網絡市場的地方,「其他人也買了......」看什麼

我使用該數據庫的產品和訂單ID的表。我想最簡單的方法是編寫一個PHP腳本來執行2個查詢,一個返回包含有問題的項目的所有訂單,另一個列出每個訂單ID的所有項目。但我曾希望有一個「聰明」的查詢可以取代它。

我的最終目標是搜索物品列表中存在的所有訂單。這個想法是試圖減少結果,只顯示那些已經找到指定產品組合的人。

+0

OK又在哪裏是你的代碼? – 2015-04-04 10:42:32

+0

這是一個很好的起點:http://en.wikipedia.org/wiki/Recommender_system – eggyal 2015-04-04 10:43:36

回答

0

假設:

products(id integer, name varchar(25)orders (id integer)order_items (order_id integer, product_id integer)

使用此:

SELECT oi.order_id, p2.name 
    FROM products p 
    INNER JOIN order_items oi 
     ON p.id = oi.product_id 
    INNER JOIN order_items oi2 
     ON oi.order_id = oi2.order_id 
    INNER JOIN products p2 
     ON oi2.product_id = p2.id 
    WHERE p.name = 'Carrot' 

小提琴例如:http://sqlfiddle.com/#!9/0b9f4/2

+0

這正是我所希望的。非常感謝。如果我可以再問一件事?那麼,如何獲得一組訂單,顯示所有訂單中所有項目列表中存在的項目列表中的所有信息? – 2015-04-04 13:51:31

+0

我很快就會回覆你。 – 2015-04-04 14:03:10

+0

你可能會對這個問題感興趣:http://stackoverflow.com/questions/29431729/select-result-that-match-all-array-values/29432206#29432206我認爲這幾乎是你問的相同的東西 – 2015-04-04 17:40:36

相關問題