2012-09-10 100 views
2

我有三個表,使用第二個表作爲查找?

帖子, 標籤, Posts_Tags_Link

文章有: ID,內容

標籤有:ID,標籤

Posts_Tags_Link有:POST_ID,TAG_ID

基本上,如果一個標籤鏈接到一個帖子,那麼在Posts_Tags_Link中創建一個條目,因爲這是一個多關係船。

無論如何,我想做一些搜索並返回鏈接到特定關鍵字的帖子的所有行。

E.g.如果我有

帖子:

id | content 
1 | some stuff 
2 | more stuff 
3 | stuff again 

標籤:

id | tag 
1 | first 
2 | second 
3 | third 
4 | fourth 

Posts_Tags_Link

post_id | tag_id 
     1 | 1 
     1 | 2 
     2 | 2 
     3 | 3 
     3 | 4 

和我搜索second我想回到

id | content 
1 | some stuff 
2 | more stuff 

我假設我要爲此使用連接, 我是否只需將我的張貼表加入鏈接表中的post_id上,然後將鏈接表加入到tag_id列上的標記表的鏈接表中?

我相信這是正確的,但如果我只想匹配搜索的行(如不是在哪裏),我會喜歡或將不同的連接之一工作?

我想,如果我搜索sec它會有相同的結果,如果我搜索second所以相信我必須這樣做使用像?

回答

3

你應該加入三個表,因爲你想從他們身上搜索,例如

SELECT a.* 
FROM post a 
      INNER JOIN Posts_Tags_Link b 
       on a.id = b.post_id 
      INNER JOIN Tag c 
       ON b.tag_tag_id = id 
WHERE a.content like '%keyword%' OR  -- build you conditions here 
     c.tag like '%keyword%' 
0

嘗試使用下面的查詢。

SELECT p.id, p.content FROM 
Posts_Tags_Link ptl 
    INNER JOIN Posts p ON p.id = ptl.post_id 
    INNER JOIN Tags t ON t.id = ptl.tag_id 
WHERE t.tag = 'second'