我需要调整此查询以在另一列和另一张表中进行搜索(例如)。

看到:

$query2 = "
select distinct(lances.codigo)
     , datacompra
     , horacompra
     , cupom
  from lances
     , ".$tabelaCad."
 where lances.idcliente = ".$tabelaCad.".id
   and lances.datapgto = '0000-00-00'
   and lances.horapgto = '00:00:00'
   and (".$tabelaCad.".nome like '%".$cliente."%' or ".$tabelaCad.".usuario like '%".$cliente."%')
 group
    by lances.codigo
 order
    by lances.datacompra desc
     , lances.horacompra desc
    ";


他目前仅在以下位置搜索:".$tabelaCad.".nome and ".$tabelaCad.".usuario.

变量$tabelaCad是名为cadastro的表的名称,而变量cliente是接收搜索POST的表的名称。

我还需要她在表codigolances列和registro e reg1列的新表reg2中查找。

在这种情况下,查询是什么样的?我尝试了几种方法,但它不起作用。

我正在使用MySQL 5.7,仍然...

最佳答案

经过长时间的讨论,我们找到了表之间的最后一个关系。

registro.reg1lances.codigo

因此,解决问题的最佳方法是使用inncer join。

您可以节省不必要的键入内容,并且可以使用别名来寻址表,这对于编写过程而言更为方便。

这是我完成的解决方案:

<?php
$query2 = "
select
    distinct lc.codigo as codigo,
    lc.datacompra as datacompra,
    lc.horacompra as horacompra,
    lc.cupom as cupom
from `lances` as lc
inner join `".$tabelaCad."` as ca on lc.idcliente = ca.id
inner join `registr` as ri on lc.codigo = ri.reg1
where lc.idcliente = ca.id
    and lc.datapgto = '0000-00-00'
    and lc.horapgto = '00:00:00'
    and (ca.nome like '%".$cliente."%' or ca.usuario like '%".$cliente."%')
group
    by lc.codigo
order
    by lc.datacompra desc, lc.horacompra desc
";
?>


我将它们放在选择中,因为我不完全知道您打算使用xD

10-04 10:34