0

我正在使用 codeigniter,并且正在编写以下查询:

$this->db->select('*');
$this->db->from('tbl_profile');
$this->db->join('tbl_msg', 'tbl_msg.msg_sender_id = tbl_profile.profile_id');
$this->db->order_by("msg_id", "desc");
$query = $this->db->get('', $config['per_page'], $this->uri->segment(3));
$data['records'] = $query->result_array();

相应地,我得到以下结果:

SELECT (*) FROM tbl_profile
JOIN tbl_msg ON tbl_msg.msg_sender_id = tbl_profile.profile_id

这是返回错误的结果,因为我想要与以下查询相对应的结果:

select * from tbl_profile as A
join (select * from tbl_msg) as B on A.profile_id = B.msg_sender_id

请帮忙

4

1 回答 1

0

首先,您缺少 order by 子句,但我认为,您的意思是其他差异。

如果你愿意,你可以使用这个查询,什么会给你返回确切的代码:

$this->db->select('*', FALSE);
$this->db->from('tbl_profile as A');
$this->db->join('( select * from tbl_msg ) as B', 'A.msg_sender_id = B.profile_id');
$this->db->order_by("msg_id", "desc");
$query = $this->db->get('', $config['per_page'], $this->uri->segment(3));
$data['records'] = $query->result_array();

来自codeigniter用户手册:

$this->db->select()

接受可选的第二个参数。如果您将其设置为 FALSE,CodeIgniter 将不会尝试使用反引号保护您的字段或表名。如果您需要复合选择语句,这很有用。

于 2012-08-18T15:29:18.793 回答