2013-05-12 49 views
2

這是我讀過的上一個問題:MySQL查詢通過標籤查找相關帖子並按流行排序?

這是一個複雜的情況(對我而言),我希望有人在 這裏可以幫助我。我已經做了大量的搜索解決方案 ,並沒有找到一個。這基本上是我的 情況......(我修剪下來,因爲如果有人能幫助我 創建此查詢,我可以把它從那裏。)

表項目(article_id的,ARTICLE_TITLE)

TABLE articles_tags(ROW_ID,article_id的,TAG_ID)

TABLE article_categories(ROW_ID,article_id的,CATEGORY_ID)

所有表的具有article_id的共同之處。我知道所有的 tag_id和category_id行是什麼。我想要做的是返回 列表中的所有article_tags和article_categories可能在 中共有的文章,按照常用條目的數量排序。

例如:

第一條 - 標籤:TAG1,TAG2,TAG3 - 類別:CAT1,CAT2

第二條 - 標籤:TAG2 - 類:CAT1,CAT2

第三條 - tags:tag1,tag3 - categories:cat1

所以如果我的文章有「tag1」和「cat1 and cat2」,它應該返回 articl順序ES:

第一條(標籤1,CAT1和CAT2普通)

第三條(標籤1,CAT1中常見)

第二條(共同CAT1)

任何幫助將真正成爲不勝感激!謝謝!

根據這樣的回答:

How to Create MySQL Query to Find Related Posts from Multiple Tables?

我使用的查詢和它工作得很好:

SELECT article_id,count(*) AS q 
FROM article_tags 
WHERE id_tag IN (
    SELECT id_tag 
    FROM article_tags 
    WHERE article_id=41 
) 
AND article_id!=41 
GROUP BY article_id 
ORDER BY q DESC 

現在我想排序article_view結果(有1更多表格)。

TABLE articles_info (article_id, article_view, article_vote, article_something) 
+0

所以,你有一個工作查詢不計數爲您和您要添加排序? – 2013-05-12 15:44:39

回答

6

試試這個:

SELECT at.article_id,count(*) AS q 
FROM article_tags at 
INNER JOIN article_info ai ON at.article_id = ai.article_id 
WHERE at.id_tag IN (
    SELECT id_tag 
    FROM article_tags 
    WHERE article_id=41 
) 
AND at.article_id!=41 
GROUP BY at.article_id 
ORDER BY q DESC, ai.article_view DESC 
+0

非常感謝!正是我想要的。 – TrungDQ 2013-05-12 17:23:37