我正在尝试解决一个生物学中的“查找给定一组生物的核心基因组”的问题。基本上,给定一个生物列表,找到它们共同拥有的所有基因。为了抽象掉生物学,你可以想象在一组人中查找所有最喜欢的颜色(一个人可以有多个最喜欢的颜色)。
数据库表格应该长这样:
name | fav_colour
john | red
john | blue
john | green
jason | red
jason | blue
matt | red
matt | teal
用户可以指定一组名称,如[john,jason]以得到[red,blue],或[john]以获得[red,blue,green],或[john,jason,matt]以获得[red]。
我试图通过进行 n 次自连接来解决此问题,其中 n 是提供的名称数量。
有什么办法可以让我对表进行 n 次自连接以解决任何数量的名称的问题吗? 我尝试通过 Postgres 函数来实现这个目标,但无法弄清楚 n 次自连接部分... 任何帮助或指向正确方向的指针都将不胜感激。
不幸的是,我不能更改架构以使这些类型的查询更容易。