2012-11-08 42 views
0

我仍然試圖學習更復雜的SQL查詢,並且發現很難返回我想要的結果。基於標記數據庫返回不同的SQL查詢基於AND

用戶將輸入一個或多個關鍵詞,查詢將基於通過關鍵字到位的侷限性返回主題:

實例DB: 表:

keywords 
------- 
keyword_id 
keyword 


topics 
------- 
topic_id 
topic_other_stuff 

topics_keywords 
------- 
tk_id 
topic_id 
keyword_id 

每個topic_id能有多個關鍵字附加到它。

如果用戶輸入2個或更多的關鍵字,我試圖得到一個查詢,該查詢只返回通過topics_keywords表格附加了關鍵字的主題。

任何幫助,將不勝感激!

謝謝!

回答

1
select t.topic_id 
from topics_keywords t 
inner join keywords k on t.keyword_id = k.keyword_id 
where k.keyword in ('keyword1', 'keyword2') 
group by t.topic_id 
having count(distinct k.keyword_id) = 2 
+0

對'FROM topic_id ti'部分略有困惑。這是否應該引用一個列或表? –

+0

謝謝。儘管我仍然在運行查詢時遇到問題。應該引用還是加入topics_keyword表? –

+0

完美無缺!謝謝 –