2012-08-31 50 views
0

> * 1.我需要在活动记录写这篇*笨的活动记录复杂的查询

我需要加入这些3个表,但加入的条件是非常非常有选择性

$this->db->select(name); 
$this->db->from('table0'); 
$this->db->join('table1','(table1.id=0 AND table0.feild1 = table1.feild1) OR (table1.id=1 AND table0.feild2 = table1.feild2)') // <--- how to write this is my question 

我可以做一个简单的连接,但主要的问题是实现上面提到的连接的条件。这也是非常,非常非常小的一部分!大的查询,所以我真的不能改变它回到原生SQL查询,如:

$this->db->query('//entire sql query'); //cant do this, need to write ACTIVE RECORDS 

当我写的活动记录,萤火引发我一个错误说:

你在你的SQL有一个错误句法;检查手册中 对应于你的MySQL服务器版本正确的语法使用 接近“)或

有什么建议?

回答

0

说实话,我不知道这是可能的。 CI不使用真正的活动记录,因此每种方法都有非常严格的参数,而且我没有看到任何可以被诱骗执行所需任务的东西。

我会尝试重新编写查询了一下:

$this->db->select(name); 
$this->db->from('table0'); 
$this->db->join('table1','(table1.id=0 AND table0.feild1 = table1.feild1)', LEFT); 
$this->db->join('table1','(table1.id=1 AND table0.feild2 = table1.feild2)', LEFT); 
$this->db->where('(table1.id=0 AND table0.feild1 = table1.feild1)'); 
$this->db->or_where('(table1.id=1 AND table0.feild2 = table1.feild2)'); 

我相信这个查询将返回正确的价值观,但你肯定会想对其进行全面测试。希望这至少能让你朝着正确的方向前进。

+0

整齐!谢谢你的帮助 –