给出这个简单的例子(http://sqlfiddle.com/#!9/cab8cc);
该项目具有一种或多种颜色。
查询所有具有紫色的项目将检索 itemA 和 itemB。(所有物品至少具有紫色)
我正在寻找一个查询,该查询将返回仅具有紫色的项目。(或者广泛地说,如果一个项目的颜色为紫色和橙色,而另一个项目的颜色为紫色、橙色和红色,我希望能够检索具有完全相同的颜色紫色、橙色和红色的项目)
有可能吗?
考虑到需要,并考虑到我们正在使用 Web 应用程序框架(此处为 Rails),它可以归结为以下实现:
# use via : Item.by_colors(['Purple', 'Orange'])
model Item
scope(:by_colors, ->(*args) do # args is an array of strings
# ...dynamically build inner joins
# ...count number of args
# ...generate sql
# ...execute sql through the orm
end)
end
因为sql有点不寻常(至少对我来说),试图确保我们没有使用错误的表结构来满足这种需要
思考这些: