我有两个表,一个与n:1关系连接到第一个表。
我正在尝试通过发布文章时插入的标记名称来检索相关文章。
我的表结构如下:
articles
id | article_title | article_content
----+-----------------+----------------
1 | title one | info goes here
2 | title two | info goes here
3 | title three | info goes here
article_tags
tag_id | article_id | tag_name
-------+--------------+----------------
1 | 1 | health
2 | 1 | information
3 | 2 | how-to
4 | 3 | how-to
5 | 3 | health
6 | 3 | network
7 | 1 | network
我无法弄清楚如何通过这些tag_names获取相关文章。
article_id 1有health
,第3条也有共同之处。
article_id 2有how-to
,第3条也有共同之处。
我尝试过以下操作,但它与标签名称没有关系,因为我无法弄清楚如何连接tag_names ..
SELECT *
FROM articles
LEFT JOIN article_tags ON articles.article_uid = article_tags.article_id
LIMIT 4
答案 0 :(得分:3)
SELECT a1.id, GROUP_CONCAT(DISTINCT a2.id) AS related_articles
FROM articles AS a1
JOIN article_tags AS t1 ON a1.id = t1.article_id
JOIN article_tags AS t2 ON t2.tag_name = t1.tag_name AND t2.article_id != t1.article_id
JOIN articles AS a2 ON a2.id = t2.article_id
GROUP BY a1.id