iT邦幫忙

0

如何使用sql取得多重標籤的文章

  • 分享至 

  • xImage

假如文章可加入多種標籤,要如何搜尋兩個以上的標籤,來取得這篇文章
例如:
文章1,有A標籤、B標籤、C標籤
文章2,有B標籤、C標籤
文章3,有C標籤
我要搜尋A標籤與B標籤,只會出現文章1

假如我的資料表如下
artical
id title text
1 test test
2 test test
2 test test

keyword
id word
1 A標籤
2 B標籤
3 C標籤

relation
id artical_id keyword_id
1 1 1
1 1 2
1 1 3
1 2 2
1 2 3
1 3 3

這樣可以只用sql做到嗎?還是只能用程式?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
外獅佬
iT邦大師 1 級 ‧ 2015-07-16 16:18:14
最佳解答

T-SQL可以用INTERSECT達到交集的效果

<pre class="c" name="code">
select a.* FROM [article] a INNER JOIN [relation] b ON a.[id]=b.[artical_id] WHERE b.[keyword_id] IN (SELECT [id] FROM [keyword] WHERE [word]='A標籤')
INTERSECT
select a.* FROM [article] a INNER JOIN [relation] b ON a.[id]=b.[artical_id] WHERE b.[keyword_id] IN (SELECT [id] FROM [keyword] WHERE [word]='B標籤')

我要發表回答

立即登入回答