我有三個表。SQL查詢:獲取與帖子關聯的標籤
posts
| id | title |
+---------+-----------+
| 1 | hello |
| 2 | goodbye |
+---------+-----------+
posts_tags
| tag_id | post_id |
+---------+-----------+
| 1 | 1 |
| 2 | 1 |
| 2 | 2 |
+---------+-----------+
tags
| id | name |
+---------+-----------+
| 1 | news |
| 2 | photos |
+---------+-----------+
我希望能夠選擇的職位,但有這樣的結果
post.id post.title tags
------------------------------------
1 hello news,photos
2 goodbye photos
喜歡的東西
SELECT *,
GROUP_CONCAT(tags.name) AS tags
FROM posts
LEFT JOIN posts_tags
ON posts.id = posts_tags.post_id
LEFT JOIN tags
ON posts_tags.tag_id = tags.id
似乎不正常工作。請指教,感謝您的時間:)
我有多種語言的標籤,所以我強迫標準化標籤。你可能有任何其他的建議,我怎麼可以denormalize?如果是這樣,也許我可以開始一個問題 – axsuul
您的架構並不反映國際標籤。你的意思是標籤「照片」在顯示之前會翻譯成不同的語言嗎? 哪裏?在表示層?如果是這樣的話 - 那麼我不會在上面的提案(使用GROUP_CONCAT)和我之間看到任何區別。他們都會以逗號分隔的字符串生成標籤列表。 ps:無論如何,我認爲這些標籤是不適合國際化的實體... – zerkms
是啊我想標籤將被翻譯。我希望爲數據庫中的每個標記存儲不同的翻譯,如果它要被標準化 – axsuul