首页 > 解决方案 > 如何调整这个研究查询?

问题描述

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

看:

$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表格中的列lances和列中名为e的新表格。registroreg1reg2

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

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

标签: phpmysqlsql

解决方案


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

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


推荐阅读