我在写一个针对内部数据仓库的基本搜索引擎。在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