php - 如果从另一个表连接时记录中包含重复项,则显示记录中的一个名称

标签 php mysql

我有两张 table 。一个名为“markers”,包含 ID(pk)、名称、地址,另一个名为“markers_date”的表,包含“markers_id、date、date2、time”。

我完全没有问题将其作为 json 进行回显。但是,我只想显示一次姓名和地址,并显示该姓名对应的日期和时间,其中有多个日期和时间。

PHP

<小时/>
$markers = array();
$qry = "SELECT markers.name, markers.address, markers_date.date, markers_date.date2, markers_date.time FROM markers, markers_date WHERE markers_date.markers_id = markers.id ORDER BY markers.name";

$result = mysqli_query($dbConnect, $qry);

while($row = mysqli_fetch_object($result)) {

    $markers[] = $row;

}

echo '{"markers":'.json_encode($markers).'}'; here

我收到的输出如下:

          Atlantic Yacht Club     5 New St          3/31     5/30     6:30-9:00pm
          Atlantic Yacht Club     5 New St          4/30     6/16     4:30-7:00pm
          VFW                  145 Greenwich St     4/22              6:30-9:00pm
          VFW                  145 Greenwich St     4/27     4/30     6:30-9:00pm
          VFW                  145 Greenwich St     7/22              6:30-9:00pm

我真正想要的是:

          Atlantic Yacht Club     5 New St          3/31     5/30     6:30-9:00pm
                                                    4/30     6/16     4:30-7:00pm

          VFW                  145 Greenwich St     4/22              6:30-9:00pm
                                                    4/27     4/30     6:30-9:00pm
                                                    7/22              6:30-9:00pm

我的问题是,这是在 SQL 语句中控制还是从 PHP 数组中控制?

谢谢

最佳答案

一种方法是在 PHP 中迭代有序结果集,然后在我们不是第一次看到名称和地址的组合时有选择地清空标记名称和地址。

$curr_name = '';
$curr_address = '';
while ($row = mysqli_fetch_object($result)) {
    $name = $row->name;
    $address = $row->address;
    // if we have seen this name/address pair already, blank it out
    if ($name == $curr_name && $address == $curr_address) {
        $row->name = '';
        $row->address = '';
    }
    // otherwise, don't blank it out but remember this name/address pair
    else {
        $curr_name = $name;
        $curr_address = $address;
    }
    echo '{"markers":'.json_encode($row).'}';
}

关于php - 如果从另一个表连接时记录中包含重复项,则显示记录中的一个名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43268173/

相关文章:

PHP - 通过 HTTP 上传文件

php - 使用 MySQL 获取随机输出

Mysql 按日期排序但忽略年份

mysql - 创建表错误 MySQL Varchar 外键

php - 在没有用户交互的情况下刷新 facebook 长期访问 token

php - 根据使用 php 检查的复选框从数据库中删除多行

php - wordpress下载php文件而不是查看网页

javascript - 当我运行 return () 时? "": "" syntax in Javascript, 仅当我将文件另存为 PHP 而不是 HTML 时,我才在 Google Chrome 中收到错误

mysql - 为什么 MAX 在索引中间的列上工作

php - 正确列出网站文章