有人能解释一下这些代码之间的区别吗?因为查询生成器没有给出正确的结果,但另一个查询给出了正确的结果。
我看不见有什么不同?
$this->db->select('m.*,c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','c.COUNTRY_ALPHA2_CODE = m.location', 'left');
$this->db->where('c.LANG', 'EN');
提供正确结果的查询
SELECT m.*,c.COUNTRY_NAME FROM members m LEFT JOIN country c ON c.COUNTRY_ALPHA2_CODE = m.location WHERE c.LANG = "EN";
要生成带有CI的完整查询字符串,需要添加以下行:
$query=$db->get();
。
完整的代码看起来像:
$this->db->select('m.*,c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','c.COUNTRY_ALPHA2_CODE = m.location', 'left');
$this->db->where('c.LANG', 'EN');
$query=$db->get();
在这一行之后,您可以使用检查SQL字符串输出
echo $this->db->query();
从这里开始,您可以继续为您的视图生成查询结果
对评论的回应:
'$this->db->where('c.LANG', 'EN');'
不起作用。该行返回数据库中始终使用第一语言
您需要将语言查询放入join:
$this->db->select('m.*,c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','(c.COUNTRY_ALPHA2_CODE = m.location AND c.LANG='EN')', 'left');
$query=$db->get();
试试这个:
$this->db->select('m.*');
$this->db->select('c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','c.COUNTRY_ALPHA2_CODE = m.location', 'left');
$this->db->where('c.LANG', 'EN');