我有两张桌子,桌子和桌子。酒吧属于foos,而foos有多个酒吧(通过ActiveRecord)。我想找到一个foo,其中包含完全(且唯一)一个给定的条形名称列表。
E.g。 (请原谅任何伪代码)
bars_list = ["A", "B"]
foo = find_foo(bars_list)
foo.bars.map(&:name) = ["A", "B"]
查找foo不一定非必须是一个严格的函数。它可以是一个SQL查询来返回匹配的foo ID或非常有效的ActiveRecord函数。谢谢!
答案 0 :(得分:0)
使用GROUP BY
和HAVING
过滤所需匹配条形记录数的结果集:
SELECT foos.*
FROM foos
JOIN bars ON bars.foo_id = foos.id
WHERE bars.name IN ('bar1', 'bar2')
GROUP BY foos.id, foos.name
HAVING COUNT(*) = 2;
如果您有三个名字,请检查COUNT(*) = 3
,依此类推。