使用JOIN LEFT时如何分隔两个具有相同名称的列?

时间:2013-08-15 18:38:11

标签: php mysql codeigniter-2

MySQL表如下所示:

markers
id, tid,        lat,    lng
1   1           42.000  2.500
2   1           41.000  2.400
3   2           40.000  2.300

markers_types
id, name,   image
1   TYPE1   type1.png
2   TYPE2   type2.png

使用CodeIgniter的Active Records时:

function get_coordinates(){

    $this->db->select('*');
    $this->db->from('markers');
    $this->db->join('markers_types', 'markers.tid = markers_types.id');
    $this->db->where('state', 1);
    $query = $this->db->get();

    if( $query->result() < 1 ) return FALSE;

    $results = $query->result();
    return $results;

}

它将两个名为id的列连接(或合并)到两个不同的表中。怎么预防?是否可以防止合并这些列而不重命名它们?

2 个答案:

答案 0 :(得分:1)

只需修改您的$this->db->select('*');语句,即可列出您希望在回复中捕获的各个 table.field 名称。

$this->db->select('markers.type_id, markers.lat, markers.lng, markers_types.id, markers_types.name, markers_types.image');

答案 1 :(得分:1)

与DevlshOne的答案类似,我会使用显式选择值,但为了区分你也可以为你的选择值设置别名,如下所示:

$this->db->select('markers.type_id as m_id, markers.lat, markers.lng, markers_types.id as mt_id, markers_types.name, markers_types.image');