2011-08-22 78 views
1

我試圖顯示項目列表及其所屬的所有類別。PHP MySQL項目類別

我的數據庫結構爲:

Items table with Id, Item_Name. 
Categories table with Id, Category_Name 
Items_Categories table with Id, Item_id, Category_id. 

我想與項目名稱的表格來顯示結果,並用逗號分隔它的分類名單。我不知道如何用單個查詢來做到這一點。提前致謝。

+1

看看GROUP_CONCAT()。謹防其最大長度。 –

+0

也許你應該做一些研究,如果我們爲你做的工作,你將不會學到任何東西。有大量的PHP/MySQL教程在http://www.tizag.com/mysqlTutorial/ – JConstantine

+0

+1 @ nick提及最大長度 - 這是之前抓到我的.. – solidau

回答

2

您需要使用GROUP_CONCAT功能就是在mysql中可用:

select i.item_name, group_concat(c.category_name) as categories 
from items i 
inner join items_categories ic on i.id = ic.item_id 
inner join categories c on ic.category_id = c.id 
group by i.item_name 
1

我不會爲你寫,但你需要使用group_concat()函數(MySQL)。

1
SELECT i.Item_Name, GROUP_CONCAT(c.Category_Name) AS Category_List 
FROM Items AS i 
LEFT OUTER JOIN (
    Items_Categories AS ic 
    INNER JOIN Categories AS c ON ic.Category_id = c.Id 
) ON i.Id = ic.Item_id 
GROUP BY i.Id; 
1

我必須說,我沒有測試此查詢,但它應該是類似下面的東西:

SELECT i.Id, i.Item_name, GROUP_CONCAT(c.Category_Name) AS category_list 
FROM Items i 
JOIN Items_categories ci ON ci.Item_id = i.Id 
LEFT JOIN Categories c ON c.Id = ci.Id 
GROUP BY i.Id 

注意,您可以使用GROUP_CONCAT創建一個逗號分隔的列表。