Php Codeigniter:联接不使用相同名称和id的列

Php Codeigniter:联接不使用相同名称和id的列,php,codeigniter,Php,Codeigniter,我想把两张桌子连在一起 因为我的论坛表有列“名称”和我的论坛类别列“名称” 我无法同时显示两个名称 在我的select()上,如果我使用像$this->db->select('f.name,fc.name',false)它只显示来自论坛类别的名称 array(1){[0]=>array(1){[“name”]=>string(17)“新闻与讨论”} 问题:如何从列和列中同时显示两个名称 桌子 注意:我只想在我的foreach循环中使用$result['name'] 所以,我希望它是 Genera

我想把两张桌子连在一起

因为我的论坛表
列“名称”
和我的论坛类别
列“名称”

我无法同时显示两个名称

在我的select()上,如果我使用像
$this->db->select('f.name,fc.name',false)它只显示来自论坛类别的名称

array(1){[0]=>array(1){[“name”]=>string(17)“新闻与讨论”}

问题:如何从列和列中同时显示两个名称 桌子

注意:我只想在我的foreach循环中使用
$result['name']

所以,我希望它是

General

News & Discussion

Lounge
我已经看过了

型号

控制器

<?php

class Forums extends MY_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function index() {

        $data['label'] = '';

        $data['forums'] = array();

        $results = $this->get_forums();

        var_dump($results);

        if (isset($results)) {
            foreach ($results as $result) {

                $data['forums'][] = array(

                    'name' => $result['name'], // Only want to use single variable.

                );
            }
        }

        $data['header'] = Modules::run('admin/common/header/index');
        $data['footer'] = Modules::run('admin/common/footer/index');

        $this->load->view('template/forum/list_forum_view', $data);
    }

    public function get_forums() {
        $this->db->select('f.name, fc.name', false);
        $this->db->from('forum as f');
        $this->db->join('forum_categories as fc', 'fc.forum_categories_id = f.forum_id');
        $query = $this->db->get();

        if ($query->num_rows() > 0) {
            return $query->result_array();
        } else {
            return false;
        }
    }
}

试试这个,它会有用的

    public function get_forums() {
    $this->db->select('f.name as forum_name, fc.name as forum_categories_name', false);
    $this->db->from('forum f');

    // tried $this->db->join('forum_categories fc', 'fc.forum_id = f.forum_id');

    $this->db->join('forum_categories fc', 'fc.forum_categories_id = f.forum_id');
    $query = $this->db->get();

    if ($query->num_rows() > 0) {
        return $query->result_array();
    } else {
        return false;
    }
}

从我在你更新的问题中看到的。您需要的是
联合
,而不是
加入
。可以使用在使用UNION进行concat之前生成这两个查询

public function get_forums() {
    $forum = $this->db->select('name')->get_compiled_select('forum');
    $forum_categories = $this->db->select('name')->get_compiled_select('forum_categories');

    $query = $this->db->query($forum.' UNION '.$forum_categories);

    if ($query->num_rows() > 0) {
        return $query->result_array();
    } else {
        return false;
    }
}
简单使用

作为

关键字,因为当您尝试打印它时,该关键字会为您的列提供可选名称

这里我有两个表,它们的列名“name”相同,所以我用AS关键字更改了它们

例:

结果

Array ( [0] => Array ( [id_category] => 9 [cat_name] => OL [id_subject] => 13 [sub_name] => Science )

因此,这是一个简单的SQL语言解决方案

你能不能
echo$this->db->last_query()在查询执行后,尝试直接执行到phpmyadmin,以查看它是什么gives@Zeeshan
选择f.name,fc.name FROM
forum`as
f
JOIN
forum`u categories
fc
ON
fc
forum`u categories`id
=
f
是否在
phpmyadmin
中尝试执行它现在在控制器上的数组上显示错误消息:未定义的索引:name如果我在选择中使用have fc.name,则只会显示显示来自论坛类别的名称我只想使用“名称”一个词来获取both@wolfgang1983不能使用同一索引同时获取两个属性。但是,如果您正在使用hit进行操作,则可以将两个列连接在一起,形成您希望看到的内容
public function get_forums() {
    $forum = $this->db->select('name')->get_compiled_select('forum');
    $forum_categories = $this->db->select('name')->get_compiled_select('forum_categories');

    $query = $this->db->query($forum.' UNION '.$forum_categories);

    if ($query->num_rows() > 0) {
        return $query->result_array();
    } else {
        return false;
    }
}
$this->db->select('tbl_category.id_category,tbl_category.name AS cat_name,
                     tbl_subject.id_subject,tbl_subject.name AS sub_name');
Array ( [0] => Array ( [id_category] => 9 [cat_name] => OL [id_subject] => 13 [sub_name] => Science )