繁体   English   中英

如何在Codeigniter中联接3个表

[英]How to join 3 tables in codeigniter

我有3张桌子:

tbl_events->主键= event_id

tbl_event_bids->(event_id在其中,没有主键)

tbl_users->主键= u_id

我想获取这些字段:

tbl_events->添加日期

tbl_events-> bid_end_date

tbl_events-> event_date

tbl_event_bids-> bid_amount

tbl_users-> u_fname

tbl_users-> u_lname

没有任何错误,但数组为空。 这段代码有什么错误吗? 请帮忙...

public function get_confirmed_events($loged_user_id){

    $this->db->select(' tbl_events.event_name,
                        tbl_events.added_date,
                        tbl_events.bid_end_date,                            
                        tbl_events.event_date,

                        tbl_event_bids.bid_amount,

                        tbl_users.u_fname,
                        tbl_users.u_lname');

    $this->db->where('tbl_events.u_id', $loged_user_id);
    $this->db->where('tbl_events.closed_bid', 'N');

    $this->db->where('tbl_event_bids.bid_statues', 'W');        

    $this->db->join('tbl_event_bids', 'tbl_events.event_id = tbl_event_bids.event_id');
    $this->db->join('tbl_users', 'tbl_events.u_id = tbl_users.u_id');

    $data = $this->db->get('tbl_events');

    $confirmed_result = $data->result();

    return $confirmed_result;


}

试试这个

public function get_confirmed_events($loged_user_id){
$this->db->select(' tbl_events.event_name,
                    tbl_events.added_date,
                    tbl_events.bid_end_date,                            
                    tbl_events.event_date,
                    tbl_event_bids.bid_amount,
                    tbl_users.u_fname,
                    tbl_users.u_lname');      
$this->db->join('tbl_event_bids', 'tbl_events.event_id = tbl_event_bids.event_id','LEFT');
$this->db->join('tbl_users', 'tbl_events.u_id = tbl_users.u_id','LEFT');
$this->db->where('tbl_events.u_id', $loged_user_id);
$this->db->where('tbl_events.closed_bid', 'N');
$this->db->where('tbl_event_bids.bid_statues', 'W'); 
$data = $this->db->get('tbl_events');
$confirmed_result = $data->result();
return $confirmed_result;
}

我曾经用过LEFT JOIN如果想与其他人加入,可以在join()的第三个参数中指定它,还可以看到查询的样子echo $this->db->last_query();

如果使用联接,则必须对主表使用FROM

public function get_confirmed_events($loged_user_id){

$this->db->select(' tbl_events.event_name,
                    tbl_events.added_date,
                    tbl_events.bid_end_date,                            
                    tbl_events.event_date,

                    tbl_event_bids.bid_amount,

                    tbl_users.u_fname,
                    tbl_users.u_lname');
$this->db->from('tbl_events');
$this->db->where('tbl_events.u_id', $loged_user_id);
$this->db->where('tbl_events.closed_bid', 'N');

$this->db->where('tbl_event_bids.bid_statues', 'W');        

$this->db->join('tbl_event_bids', 'tbl_events.event_id = tbl_event_bids.event_id','left');
$this->db->join('tbl_users', 'tbl_events.u_id = tbl_users.u_id','left');

$data = $this->db->get();

$confirmed_result = $data->result();

return $confirmed_result;

}

希望对您有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM