在只有id的另一个查询中运行搜索查询

时间:2016-03-13 18:27:51

标签: mysql

我试图解决一个查询来搜索datatables脚本中的所有参数与服务器端..但在表A的一个字段中,我调用表B的id。我需要搜索表的描述B,我试过这个。

select * from asesor
where dni_asesor like '%"der"%' or 
apellido_paterno like '%"SOMETHING"%' or 
apellido_materno like '%"SOMETHING"%' or 
nombres like '%"SOMETHING"%' or nro_cuenta like '%"SOMETHING"%' or 
(select distinct cliente.nombre_cliente FROM cliente join asesor on cliente.id_cliente=asesor.id_cliente where nombre_cliente like '%"SOMETHING"%')

表格是:

Table: asesor
Columns:
id_asesor int(11) UN zerofill AI PK 
dni_asesor varchar(50) 
apellido_paterno varchar(50) 
apellido_materno varchar(50) 
nombres varchar(50) 
id_cliente int(11) 


Table: cliente
Columns:
id_cliente int(11) UN zerofill AI PK 
dni_cliente varchar(50) 
nombre_cliente varchar(50) 

请帮忙!!! :d

1 个答案:

答案 0 :(得分:1)

您可以使用从asesorcliente的左连接来检查其他表格。然后,如果两个表之间的id_cliente匹配,nombre_cliente将不为空,您可以测试它的值。如果没有匹配项,则nombre_cliente将为空,并且它将使where子句中的条件失败。

我没有测试过这个,因为我没有你的桌子,但它应该适合你。

SELECT * FROM asesor
  LEFT JOIN (SELECT DISTINCT cliente.nombre_cliente, id_cliente FROM cliente) cliente
  ON cliente.id_cliente=asesor.id_cliente
WHERE dni_asesor LIKE '%"der"%' OR 
apellido_paterno LIKE '%"SOMETHING"%' OR 
apellido_materno LIKE '%"SOMETHING"%' OR 
nombres LIKE '%"SOMETHING"%' OR nro_cuenta LIKE '%"SOMETHING"%' OR
cliente.nombre_cliente LIKE '%"SOMETHING"%'