【发布时间】:2016-02-03 09:05:03
【问题描述】:
我有两个通过 fkey 连接的表(一对多关系)。第一个表包含记录的名称。第二个表包含有关记录的注释。显然这些表也有其他字段,但它们与情况没有任何关系。用户输入一串关键字。输入作为数组 $keywords 传递给函数。在这个函数中,我想找到那些包含 all 关键字的记录。一些关键字可能在第一个表中找到,而另一些则在第二个表中。更具体地说:
table family (family_id, family_lastname)
table members (member_id, family_id, member_firstname, notes)
family_id 是 members 的 p_key 和 family 的 f_key。 family_id 是 family 的 p_key。
如果我想搜索一个知道他部分姓氏的人(因为他可能是 Alejandro Gonzalez Inarritu,所以我可以通过 Gonzalez 或 Inarritu 进行搜索)或备注字段中的一些其他数据,那么我想在两个字段中搜索 - family_lastname 和 notes,查看是否所有关键字都属于此人,并返回他的 id (member_id)。
我很确定您可能有很多问题,例如 - 为什么不为姓氏和注释等创建单独的字段,但是了解数据的全部性质,应该这样做。
到目前为止,我正在发布查询,这显然不起作用,甚至不接近我想要实现的目标。
SELECT member_id FROM members WHERE notes = %$keywords% OR family_id = (SELECT family_id FROM family WHERE family_lastname = %$keywords%);
如果我只有一个关键字,这会得到正确的结果。我想对每个关键字执行此查询,然后加入这些结果。
postgres 版本是 9.2++,所以请随意使用任何花哨的功能。另外,我希望不要使用除查询本身之外的任何其他工具(例如函数)。我希望在查询中完成整个工作。
【问题讨论】:
标签: postgresql select join