2009-08-01 119 views
2

我有這個表:帖子(post_is,標題和文本),標籤(tag_id,標籤),Post_tag_nn(id,tag_id,post_id)。我想要一個特定的帖子,例如4個標籤標記所有這些標籤的帖子,然後是這些標籤中的任意三個的所有帖子,然後是具有任何兩個這些標籤的所有帖子等等。我如何建立一個SQL查詢爲此目的(在PHP中,它似乎像一個回溯問題=給定集的所有子集)。查找與標籤有關的帖子與mysql中的一個特定帖子

回答

6

有一個查詢查找當前職位的標籤,像

SELECT tag_id 
FROM Post_tag_nn 
WHERE post_id = $post_id; 

然後使用這些標籤的ID,這個查詢應該返回你的帖子的ID與4,3,2,...匹配標籤:

+0

它的工作原理。謝謝! – Daniel 2009-08-01 08:03:52

0

如果你打算用任何一個標籤來拉下每一篇文章,你可能最好只是對每個標籤運行一個查詢來將所有帖子拉到該標籤,然後生成你自己。

+0

我正在尋找一個sql方法來做到這一點,比硬編碼更有效。 – Daniel 2009-08-01 07:52:39

0

喜歡的東西:

select t.id, t.tag_id, p.post_id, p.title, p.text 
    from post_tag_nn as t, posts p 
    where p.id = t.post_id 
    order by t.id 

,然後執行組在你的代碼。你當然可以做兩個不同的查詢,其中一個是找出你的標籤的順序和數量,然後是你爲每個標籤拉回帖子的位置。

相關問題