2014-01-14 112 views
0

我有兩個表,一個連接到第一個與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 has how-to which article 3 also has common。

我曾嘗試以下,但它並沒有真正涉及到的標籤名稱,因爲我無法弄清楚如何將連接tag_names加..

SELECT * 
FROM articles 
LEFT JOIN article_tags ON articles.article_uid = article_tags.article_id 
LIMIT 4 

回答

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 

DEMO

+0

這是有點困惑,無法理解所有事情,每個人都在做什麼,但我終於明白了,再次感謝Barmar。 – iBrazilian2

相關問題