我試圖顯示項目列表及其所屬的所有類別。PHP MySQL項目類別
我的數據庫結構爲:
Items table with Id, Item_Name.
Categories table with Id, Category_Name
Items_Categories table with Id, Item_id, Category_id.
我想與項目名稱的表格來顯示結果,並用逗號分隔它的分類名單。我不知道如何用單個查詢來做到這一點。提前致謝。
我試圖顯示項目列表及其所屬的所有類別。PHP MySQL項目類別
我的數據庫結構爲:
Items table with Id, Item_Name.
Categories table with Id, Category_Name
Items_Categories table with Id, Item_id, Category_id.
我想與項目名稱的表格來顯示結果,並用逗號分隔它的分類名單。我不知道如何用單個查詢來做到這一點。提前致謝。
您需要使用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
我不會爲你寫,但你需要使用group_concat()函數(MySQL)。
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;
我必須說,我沒有測試此查詢,但它應該是類似下面的東西:
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創建一個逗號分隔的列表。
看看GROUP_CONCAT()。謹防其最大長度。 –
也許你應該做一些研究,如果我們爲你做的工作,你將不會學到任何東西。有大量的PHP/MySQL教程在http://www.tizag.com/mysqlTutorial/ – JConstantine
+1 @ nick提及最大長度 - 這是之前抓到我的.. – solidau