我在寫一個針對內部數據倉庫的基本搜索引擎。在Oracle中計數匹配
假設我有一個「技能」表,像這樣:
EmpID Skills
----- --------------------
1 ,Java,
2 ,Java,,C#,
3 ,C#,,Ruby,
4 ,Java,,C#,,Python,
5 ,Python,,C#,
我需要編寫一個查詢,搜索技能表,尋找匹配。
如果我在尋找的Java 和 C#,我想看到這些結果:
EmpID Skills Matches
----- ----------------- -------
2 ,Java,,C#, 2
4 ,Java,,C#,,Python, 2
如果我在尋找的Java OR C#,我想看到這些結果,按照匹配順序排列:
EmpID Skills Matches
----- ------------------ -------
2 ,Java,,C#, 2
4 ,Java,,C#,,Python, 2
1 ,Java, 1
3 ,C#,,Ruby, 1
5 ,Python,,C#, 1
我該如何在SQL(Oracle 11)中編寫該查詢?
謝謝!
您打算如何提供「用戶輸入」(需要匹配的技能以及「OR」與「AND」等的選擇?)當AND和OR類似時應該有什麼選擇可用你輸入三個技能來搜索,或四個技能?只是技能的數量? – mathguy
我們有一個預定義的技能列表,並將其顯示在多選列表中。用戶還可以選中一個框來使所有必要的技能(AND),或不選中(OR)。 – WOPR
哦 - 所以你會尋找所有的技能,或任何一種技能 - 而不是其他組合。然後,在我提供的解決方案(適用於OR選擇,任何一項技能匹配)中,您可以通過在外部選擇中添加WHERE子句來獲得AND版本(匹配的所有技能) - 只選擇匹配數量等於技能的總數。 – mathguy