如何使用foreach在表中显示带有左连接的选择查询记录?

Posted

技术标签:

【中文标题】如何使用foreach在表中显示带有左连接的选择查询记录?【英文标题】:How to display records of select query with left join in table using foreach? 【发布时间】:2016-03-22 02:30:34 【问题描述】:

我有两个表(表 A 和 B)。我需要在一张表中显示它们,但是在如何在我的表中显示记录时遇到了问题。请查看我的示例:

表 A:

id   name
1    John
2    Mark
3    Nick`

表b:

id     job 
1    Encoder
2
3    Programmer`

我做了一个查询来连接两个表

select a.id, a.name, b.job from table_a a
left join table_b b on b.id=a.id
order by a.id;

使用codeigniter,

这是控制器:

$this->db->select('a.id, a.name, b.job);
$this->db->from('table a');
$this->db->join('table b', 'b.id=a.id', 'left');
$this->db->order_by('a.id');
$query = $this->db->get();
$data["view_records"]=$query;
$this->load->view("table_name", $query);

这是风景

<table id="tablestyle" class="table table-bordered table-hover table-condensed">
    <col >
    <col >
    <col >
    <col >
    <thead>
        <tr>
            <th><strong>ID</strong></th>
            <th><strong>NAME</strong></th>
            <th><strong>JOB</strong></th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        <?php foreach($view_records->result() as $row)   ?>
                <tr>
                    <td><?php echo $row->a.id; ?></td>
                    <td><?php echo $row->a.name; ?></td>
                    <td><?php echo $row->b.job; ?></td>
                    <td><input type="submit" value="Modify" id="btnModify" class="btn btn-block btn-success btn-xs" onclick="btnModify('<?php echo $row->a.id; ?>');"/></td>
                </tr>
        <?php  ?>
    </tbody>
</table>

【问题讨论】:

【参考方案1】:

在模型中

public function get_user()

    $query = $this->db->query("select a.id, a.name, b.job from table_a a
        left join table_b b on b.id=a.id
        order by a.id");
    $result = $query->result_array();
    return $result;

在控制器中

$data['get_user'] = $this->model_name->get_user();

$this->load->view("view_name", $data);

可见

<table id="tablestyle" class="table table-bordered table-hover table-condensed">
    <col >
    <col >
    <col >
    <col >
    <thead>
        <tr>
            <th><strong>ID</strong></th>
            <th><strong>NAME</strong></th>
            <th><strong>JOB</strong></th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        <?php foreach($get_user as $rowItem)   ?>
                <tr>
                    <td><?php echo $rowItem['a.id'] ?></td>
                    <td><?php echo $rowItem['a.name'] ?></td>
                    <td><?php echo $rowItem['b.job'] ?></td>
                    <td><input type="submit" value="Modify" id="btnModify" class="btn btn-block btn-success btn-xs" onclick="btnModify('<?php echo $rowItem['a.id'] ?>');"/></td>
                </tr>
        <?php  ?>
    </tbody>
</table>

【讨论】:

以上是关于如何使用foreach在表中显示带有左连接的选择查询记录?的主要内容,如果未能解决你的问题,请参考以下文章

选择在表中使用连接表和数组

PostgreSQL 行级安全性涉及视图或带有连接的选择

如何在 Oracle SQL 中仅选择最近 30 天内第一次在表中显示的这些 ID?

选择带有“is null”子句的查询和子选择/左连接不返回结果

带有左连接的 Oracle 更新

Power BI中有一列日期有多个是相同的,如何在表中的X轴上全部显示出来