如何调整这项研究查询?

时间:2019-08-13 18:31:23

标签: php mysql sql

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

请参阅:

$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的表的名称。

我需要她也在表codigo的列lancesregistro e reg1列的新表reg2中查找

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

我仍在使用MySQL 5.7 ...

1 个答案:

答案 0 :(得分:-1)

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

registro.reg1lances.codigo

所以解决问题的最佳方法是使用inncer联接。

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

这是我完成的解决方案:

<?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