查询以查找约束可以在任何给定列中的匹配

时间:2016-03-07 18:41:48

标签: sql

我为游戏中的所有项目创建了一个数据库。一个项目可以有0 - 3个属性。这些属性分别存储在Atttribute1, Atttribute2, Atttribute3列中。

属性的顺序很重要,这意味着我只能简单地将attribute1attribute3交换。 Attributes由ID表示,它们存储在Attribute表中。

在搜索时,我想让用户选择查找包含他们指定的三个属性的匹配项,即使它们的顺序不正确。

示例:item1具有属性1 2 2,如果用户指定2 2 1则其匹配但3 2 2不匹配。

表示null情况:null 2 2和2 2 2不匹配

我考虑过使用
Attribute1 in (input1, input2, input3) and Attribute 2 in (input1, input2, input3) ...
但是然后匹配1 2 2和1 1 2。

我还考虑将所有三列联合到一个新的临时表中,但这可能会破坏索引并降低搜索速度。

1 个答案:

答案 0 :(得分:0)

您确实应该将属性存储在联结表中,每个项目和每个属性都有一行。

但是,你可以使用显式逻辑做你想做的事情:

NSTask