2011-11-18 91 views
0

擷取產品類別我有3個表一行與產品信息

products   categories  products_categories 
------------  ------------- -------------------- 
product_id  category_id  product_id 
product_title category_title category_id 

每個產品可以屬於多個類別爲DB模式顯示。 我加入這三個表格以獲得最後三個插入產品的列表。

SELECT p.product_id, 
     p.product_title, 
     c.category_id, 
     c.category_title 
FROM products p 
INNER JOIN products_categories pc ON p.product_id = pc.product_id 
INNER JOIN categories c ON pc.category_id = c.category_id GROUP BY p.product_id LIMIT 3 

通過上述查詢我得到的產品,但與該產品屬於第一類。

我的問題是,是否可以通過修改查詢來獲取每個產品所屬的所有類別,以及產品信息?

或者唯一的方法是對每個產品執行另一個查詢,同時獲取列表以獲取其類別?

+0

改爲嘗試GROUP BY pc.product_id。它確實看起來正確。 – Matt

回答

4

你可以嘗試:

SELECT p.product_id, p.product_title, 
     GROUP_CONCAT(c.category_title) 
FROM products p 
    INNER JOIN products_categories pc ON p.product_id = pc.product_id 
    INNER JOIN categories c ON pc.category_id = c.category_id 
GROUP BY p.product_id 

GROUP_CONCAT語法here

+0

我現在無法測試它,但看起來應該這樣做。我會讓你知道它是怎麼回事。 – Khronos

+0

@Khronos:希望它是你的一個;) – Marco

+0

正是我在找什麼!感謝您的回答! ;) – Khronos

1

不使用 「分組依據」。然後在您的PHP代碼組中手動輸入product_id並收集所有類別。

+0

如果我不在sql中使用該組,查詢將返回同一產品的行不是嗎?我想要最後3種不同的產品。 – Khronos