Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL选择并加入结果_Php_Mysql_Select_Join - Fatal编程技术网

Php MYSQL选择并加入结果

Php MYSQL选择并加入结果,php,mysql,select,join,Php,Mysql,Select,Join,嗨,我正在寻找一个我们在工作中使用的小系统。系统使用3个表、引号、作业和详细信息。在这些表格中有几个字段,但我关注的领域如下: 下面是一个for my table和mysql语句 引号 报价单 引文与标题 工作 工作证 job“u quoteid-job”存储与作业关联的报价的id 详细信息 详细信息 详细信息 详细信息\u quoteid-详细信息\u quoteid存储与详细信息相关的报价的id,可以有多个详细信息链接到报价 然后,我的搜索是根据键入的搜索词查看每个表,并显示qu

嗨,我正在寻找一个我们在工作中使用的小系统。系统使用3个表、引号、作业和详细信息。在这些表格中有几个字段,但我关注的领域如下:

下面是一个for my table和mysql语句

引号

  • 报价单
  • 引文与标题
工作

  • 工作证
  • job“u quoteid-job”存储与作业关联的报价的id
详细信息

  • 详细信息
  • 详细信息
  • 详细信息\u quoteid-详细信息\u quoteid存储与详细信息相关的报价的id,可以有多个详细信息链接到报价
然后,我的搜索是根据键入的搜索词查看每个表,并显示quote_id、job_id、quote_title和details_行

以下是我目前用于搜索的代码:

$fetch = mysql_query("SELECT * FROM quotes AS qts 
                      LEFT JOIN jobs AS jbs ON qts.quote_id=jbs.job_quoteid
                      JOIN details AS dts ON qts.quote_id=dts.quote_detailsid

                      WHERE concat(' ',qts.quote_code,qts.quote_id) like '%$param%'
                      OR qts.quote_title REGEXP '^$param'

                      OR concat(' ',jbs.job_code,jbs.job_id) like '%$param%'

                      OR dts.details_line LIKE '%$param%'
                     ");

while ( $row = mysql_fetch_object( $fetch ) ) {
    $sResults .= '<tr id="'. $row->job_id . '">';
    $sResults .= '<td><a href="../../jobs.php?action=viewJob&amp;job_id='. $row->job_id .'">'. $row->job_code . $row->job_id .'</a></td>';
    $sResults .= '<td><a href="../../quotes.php?action=viewQuote&amp;quote_id='. $row->quote_id .'">' . 'Q' . $row->quote_id . '</a></td>';
    $sResults .= '<td>' . $row->quote_title . '</td>';
    $sResults .= '<td>' . $row->details_line . '</td>
    </tr>';
}
$fetch=mysql\u查询(“从引号中选择*作为QT
左键将作业作为qts上的jbs连接。quote_id=jbs.job_quoteid
将详细信息作为qts上的dts进行连接。quote\U id=dts.quote\U detailsid
其中concat(“”,qts.quote_代码,qts.quote_id)类似“%$param%”
或qts.quote_title REGEXP'^$param'
或concat(“”,jbs.job_code,jbs.job_id),如“%$param%”
或dts.details_行,如“%$param%”
");
while($row=mysql\u fetch\u object($fetch)){
$sResults.='';
$sResults.='';
$sResults.='';
$sResults.=''.$row->quote_title';
$sResults.=''.$row->details\u line.'
';
}
这就是我需要更多助手的地方,搜索是有效的,但例如,如果我输入“NCR”作为搜索词,它将显示4个结果,这是因为我有一个“NCR集合”的引号,这个引号有4个细节行(这些细节行不包含NCR这个词)但很明显,它显示了4,因为它发现包含单词“NCR”的quote_id都在其中。因此,我的结果页面在一个表行中有4个结果,每个结果都显示有quote_id、job_id、job_title和detail_行,我希望它看起来是在一个job_id和quote_id下显示4个详细信息。如果我要手动对表进行编码,我将执行以下操作,让您了解:

<table>
 <tr>
    <td>quote_id</td>
    <td>job_id</td>
 </tr>
 <tr>
    <td>quote_title</td>
 </tr>
 <tr>
    <td>details_line</td>
    <td>details_line</td>
    <td>details_line</td>
    <td>details_line</td>
 </tr>
</table>

报价单
工作证
引用标题
详细信息
详细信息
详细信息
详细信息
我希望这是有道理的,有人能把我推向正确的方向

提前谢谢


Ian

最简单的方法是将查询的所有输出,即
$row->job\u id
$row->quote\u id
等存储在数组(或变量)中,并检查下一个
job\u id
quote\u id
是否唯一。为此,可以使用函数

然后,如果新的
id
已经存在,您可以设置
if
语句,在现有
tr
中追加
td
,或者只添加一个新的
tr

如果您愿意,我可以尝试为它编写一个工作代码。要做到这一点,小提琴很容易


试着用这个,希望这会有帮助

SELECT * FROM quotes AS qts 
Inner JOIN jobs AS jbs ON qts.quote_id=jbs.job_quoteid
Inner JOIN details AS dts ON qts.quote_id=dts.quote_detailsid

WHERE concat(' ',qts.quote_code,qts.quote_id) like '%NCR Sets%'
OR qts.quote_title REGEXP '^NCR Sets'

OR concat(' ',jbs.job_code,jbs.job_id) like '%NCR Sets%'

OR dts.details_line LIKE '%NCR Sets%'

group by qts.quote_id

创建sqlfiddle。添加了sqlfiddle的链接。谢谢您的回复。这是否与array_unique有关?否。
array_unique
为您提供了一个仅包含唯一值的新数组。你不会想要的!您只需要检查新值是否已经存在(一个布尔输出),并相应地应用条件语句。使用
in_array()
函数检查保存的所有结果数组中是否已经存在新的
id
。那应该行的。我还编辑了我的答案以包含此内容。好的,那么我是否不必合并/添加详细信息以获得一个包含所有内容的数组?这是漫长的一天,我的大脑现在被炸了:(只需创建几个数组-一个用于
$row->job\u id
,另一个用于
$row->quote\u id
等等。现在只检查新输出与它对应的特定数组。例如,你可以检查
是否(在数组中($row->job\u id,$arr\u job)){//append to}否则{//add new}
@snookian如果你的大脑被炸了,关闭所有标签,关闭电脑,喝杯冰啤酒(假设你超过21岁)然后放松。明天再做吧!:)这不只是显示一个结果吗?我仍然需要在一个报价id下显示4个详细信息