您好我正在寻找一个我们在工作中使用的小系统。系统使用3个表,引号,作业和详细信息。在这些表格中有几个字段,但我们关注的重点如下:
这是我的表和mysql语句的sqlfiddle
行情
工作
详情
我的搜索是根据我输入的搜索词查看每个表,并显示quote_id,job_id,quote_title和details_line。
这是我目前搜索的代码:
$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&job_id='. $row->job_id .'">'. $row->job_code . $row->job_id .'</a></td>';
$sResults .= '<td><a href="../../quotes.php?action=viewQuote&quote_id='. $row->quote_id .'">' . 'Q' . $row->quote_id . '</a></td>';
$sResults .= '<td>' . $row->quote_title . '</td>';
$sResults .= '<td>' . $row->details_line . '</td>
</tr>';
}
现在我需要一些其他助手,搜索工作,但是例如,如果我输入“NCR”作为搜索词,它将显示4个结果,这是因为我有一个“NCR集”的quote_title “并且这个引用有4个detail_line到达它(这些detail_line不包含单词NCR)但显然它显示4因为它已经发现包含单词”NCR“的quote_id在每个中。因此,我的结果页面在表格行中有4个结果,其中quote_id,job_id,job_title和detail_line被显示,我希望它看起来是在一个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>
我希望这是有道理的,有些人可以把我推向正确的方向。
提前致谢。
伊恩
答案 0 :(得分:2)
最简单的方法是将查询中的所有输出,即$row->job_id
,$row->quote_id
等存储在数组(或变量)中,然后检查下一个是否存在job_id
或quote_id
是唯一的。为此,您可以使用in_array()功能。
如果新if
已经存在,您可以设置td
语句在现有tr
内附加id
,或者只添加新tr
}}
如果你愿意,我可以尝试为它编写一个可用的代码。为此,一个小提琴很容易!
答案 1 :(得分:0)
尝试使用这个希望,这可能有所帮助。
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