php mysql多对多关系查询结果显示

时间:2016-06-21 05:12:50

标签: php mysql

我只是想知道你是否可以帮我组织多对多关系的查询结果,下面是其他细节。

enter image description here
这是我的疑问:

SELECT rt.room_title as rm_name, amn.amnty_title FROM amenities_tbl AS amn LEFT JOIN room_am_link AS ral ON amn.amnty_id = ral.am_id LEFT JOIN rooms_tbl AS rt ON ral.rm_id = rt.room_id;

这是我在查询结果(codeigniter)上的foreach循环:

<?php foreach($result as $row){?>
<tr>
<td><?php  echo $row['rm_name']; ?></td>
<td><?php echo $row['am_title']; ?></td>
</tr>
<?php } ?>  

显示结果如下所示,
enter image description here

但我希望显示器如下图所示,房间标题不会重复:
enter image description here

如果我的问题很长,我很抱歉,我希望尽可能清楚 谢谢你,希望你能帮助我们。

2 个答案:

答案 0 :(得分:1)

这样做的简单方法是有一个变量,它将保留第一列中的项的值,然后在循环中,只有在值发生变化时才显示它,例如:

<?php 
   $first_col = NULL;

   foreach($result as $row){ ?>
     <tr>
       <td><?php
             if ($first_col != $row['rm_name']) {
               echo $row['rm_name'];
               $first_col = $row['rm_name'];
             } else {
               echo "&nbsp;";
             }; ?>
      </td>
      <td><?php echo $row['am_title']; ?></td>
   </tr>
<?php } ?>

当然,您的数据应按第一列排序 - 您需要将ORDER BY添加到SQL中。

答案 1 :(得分:0)

Hi Can you please replace with below php code these will help you

<?php 
$titleArray = array();
foreach($result as $row){
?>
<tr>
<td><?php 
$searchVal = array_search($row['rm_name'], $titleArray); 
if($searchVal !== false){
    echo '';
} else {
    $titleArray[] = $row['rm_name'];
    echo $row['rm_name']; 
}
?></td>
<td><?php echo $row['am_title']; ?></td>
</tr>
<?php } ?>