我有以下表格:

ClientCompanies。一个Client可以有多个Companies。我当前正在使用服务器端处理在jQuery dataTable中显示Clients的列表。一切正常,但是使用它的人问我是否也可以使用一些公司名称作为搜索条件来进行搜索。

现在,在正常情况下,dataTable会自己搜索字段。但是dataTable在经过数百个条目后会严重减慢速度,因此我不得不在服务器端处理中使用,并且我必须执行搜索并处理最终结果,dataTable仅负责显示当前批次。

我目前正在对几个LIKE表字段进行Clients比较以进行搜索。

我在想的是,我可能会添加一个属于每个Companies的所有Client的串联列表,并将自定义字段添加到LIKE比较中,甚至可能将其显示为客户端名称后的一个小列表。 。

在这种情况下,我能做些什么?我有没有这个主意?或者有更好的方法来做到这一点?

我以为可能是某种子查询,但它应该只返回一个结果。

更新:数据库结构

客户群


client_id | INT(11)|非空|自动递增
first_name | VARCHAR(200)|非空
姓| VARCHAR(200)
电邮| VARCHAR(200)|非空
密码文本
电话| VARCHAR(50)
生日日期
注册日期|约会时间
client_type | INT(11)-引用ClientTypes
status_id | INT(11)| NOT NULL-引用ClientStatus


公司介绍


company_id | INT(11)|非空|自动递增
company_name | VARCHAR(200)|非空
company_name_slug | VARCHAR(200)|非空
created_on | DATETIME |非空
Updated_on |约会时间
client_id | INT(11)| NOT NULL-引用Clients


我无法复制确切的CREATE语句,因为实际表还有更多字段和与其他表的关系。我添加了恢复的版本,但想法就在那里。我希望能够做类似的事情:

数据表单元格中的最终结果

客户Alpha


公司Foo
公司酒吧
欧米茄公司


客户Beta


欧米茄公司


客户伽玛


公司Foo


如果我搜索“ omega”,我希望结果包含Clients Alpha和Beta。

最佳答案

将查询与JOIN一起使用,例如:

SELECT Clients.* FROM Clients
JOIN Companies ON Companies.client_id = Clients.client_id
WHERE company_name LIKE '%omega%'


通过适当的SQL注入预防并选择所需的字段。

关于mysql - 在父数据库搜索中联接多个子记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54993363/

10-14 13:06
查看更多