嗨什麼是這個結果正確的查詢:MySQL查詢的項目列表視圖與標籤
+---------------------------------------+
item_id | item_title | tag_list |
----------------------------------------+
1 | Title 1 | tag1 , tag2, tag3|
2 | Title 2 | tag7 , tag2 |
3 | Title 3 | tag9 , tag5, tag4|
4 | Title 4 | tag7 , tag6, tag3|
-----------------------------------------
我有以下表格:
- 項目 - > ITEM_ID(PK),ITEM_TITLE
- 標籤 - > TAG_ID(PK),TAG_NAME(唯一的)
- items_tags_xref - > items_tags_xref_id(PK),ITEM_ID,TAG_ID
SQL小提琴 - >http://sqlfiddle.com/#!2/33dea8/1
我嘗試沒有成功以下查詢:
SELECT
items.item_id,
items.title,
(
SELECT GROUP_CONCAT(DISTINCT tags.tag_name)
FROM tags
INNER JOIN items_tags_xref
ON tags.tag_id = items_tags_xref.tag_id
INNER JOIN items
ON items_tags_xref.item_id = items.item_id
WHERE items_tags_xref.item_id = items.item_id
) AS tag_list
FROM items
上述查詢的結果顯示內tag_list
所有tag_names加,但如果我這樣做查詢:
SELECT
items.item_id,
items.title,
(
SELECT GROUP_CONCAT(DISTINCT tags.tag_name)
FROM tags
INNER JOIN items_tags_xref
ON tags.tag_id = items_tags_xref.tag_id
INNER JOIN items
ON items_tags_xref.item_id = items.item_id
WHERE items_tags_xref.item_id = 4
) AS tag_list
FROM items
「4是一個特定的item_id」我只得到正確的結果f或該項目。如果只有4是動態的,當我使用items.item_id內tag_list ..
我試圖解決這個問題幾天,一直在谷歌尋找答案,但找不到任何東西。也許我使用錯誤的關鍵詞:(但如果有人能給我至少在如何做到這一點的權利小費。這將是非常有益的。謝謝!
- PS我是新在MySQL
恕我直言,沒有問題的GROUP_CONCAT是解決方案。相反,請考慮處理應用程序級別的數據顯示問題。也就是說,考慮提供合適的DDL(和/或一個sqlfiddle)與期望的結果集合在一起。 – Strawberry
嗨,感謝您的快速響應我在這裏創建了一個SQL小提琴http://sqlfiddle.com/#!2/33dea8/1關於數據顯示我確定逗號分隔值..我只是想學習PHP和MySQL標記系統,我認爲這是一個很大的優點,如果我可以在一個查詢中做到這一點.. –